fisk 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1245) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +35 -0
  3. data/CODE_OF_CONDUCT.md +78 -0
  4. data/Gemfile +1 -2
  5. data/Rakefile +4 -2
  6. data/bin/build-machine.rb +14 -0
  7. data/bin/instruction.rb.erb +29 -56
  8. data/fisk.gemspec +5 -0
  9. data/lib/fisk.rb +269 -71
  10. data/lib/fisk/encoding.rb +67 -5
  11. data/lib/fisk/errors.rb +5 -0
  12. data/lib/fisk/instructions/adc.rb +505 -539
  13. data/lib/fisk/instructions/adcx.rb +74 -78
  14. data/lib/fisk/instructions/add.rb +505 -539
  15. data/lib/fisk/instructions/addpd.rb +36 -38
  16. data/lib/fisk/instructions/addps.rb +34 -36
  17. data/lib/fisk/instructions/addsd.rb +36 -38
  18. data/lib/fisk/instructions/addss.rb +36 -38
  19. data/lib/fisk/instructions/addsubpd.rb +36 -38
  20. data/lib/fisk/instructions/addsubps.rb +36 -38
  21. data/lib/fisk/instructions/adox.rb +74 -78
  22. data/lib/fisk/instructions/aesdec.rb +38 -40
  23. data/lib/fisk/instructions/aesdeclast.rb +38 -40
  24. data/lib/fisk/instructions/aesenc.rb +38 -40
  25. data/lib/fisk/instructions/aesenclast.rb +38 -40
  26. data/lib/fisk/instructions/aesimc.rb +38 -40
  27. data/lib/fisk/instructions/aeskeygenassist.rb +42 -44
  28. data/lib/fisk/instructions/and.rb +505 -539
  29. data/lib/fisk/instructions/andn.rb +62 -66
  30. data/lib/fisk/instructions/andnpd.rb +36 -38
  31. data/lib/fisk/instructions/andnps.rb +34 -36
  32. data/lib/fisk/instructions/andpd.rb +36 -38
  33. data/lib/fisk/instructions/andps.rb +34 -36
  34. data/lib/fisk/instructions/bextr.rb +126 -134
  35. data/lib/fisk/instructions/blcfill.rb +58 -62
  36. data/lib/fisk/instructions/blci.rb +58 -62
  37. data/lib/fisk/instructions/blcic.rb +58 -62
  38. data/lib/fisk/instructions/blcmsk.rb +58 -62
  39. data/lib/fisk/instructions/blcs.rb +58 -62
  40. data/lib/fisk/instructions/blendpd.rb +42 -44
  41. data/lib/fisk/instructions/blendps.rb +42 -44
  42. data/lib/fisk/instructions/blendvpd.rb +40 -42
  43. data/lib/fisk/instructions/blendvps.rb +40 -42
  44. data/lib/fisk/instructions/blsfill.rb +58 -62
  45. data/lib/fisk/instructions/blsi.rb +58 -62
  46. data/lib/fisk/instructions/blsic.rb +58 -62
  47. data/lib/fisk/instructions/blsmsk.rb +58 -62
  48. data/lib/fisk/instructions/blsr.rb +58 -62
  49. data/lib/fisk/instructions/bsf.rb +100 -106
  50. data/lib/fisk/instructions/bsr.rb +100 -106
  51. data/lib/fisk/instructions/bswap.rb +28 -30
  52. data/lib/fisk/instructions/bt.rb +204 -216
  53. data/lib/fisk/instructions/btc.rb +204 -216
  54. data/lib/fisk/instructions/btr.rb +204 -216
  55. data/lib/fisk/instructions/bts.rb +204 -216
  56. data/lib/fisk/instructions/bzhi.rb +62 -66
  57. data/lib/fisk/instructions/call.rb +41 -44
  58. data/lib/fisk/instructions/cbw.rb +12 -13
  59. data/lib/fisk/instructions/cdq.rb +11 -12
  60. data/lib/fisk/instructions/cdqe.rb +13 -14
  61. data/lib/fisk/instructions/clc.rb +11 -12
  62. data/lib/fisk/instructions/cld.rb +11 -12
  63. data/lib/fisk/instructions/clflush.rb +17 -18
  64. data/lib/fisk/instructions/clflushopt.rb +18 -19
  65. data/lib/fisk/instructions/clwb.rb +18 -19
  66. data/lib/fisk/instructions/clzero.rb +13 -14
  67. data/lib/fisk/instructions/cmc.rb +11 -12
  68. data/lib/fisk/instructions/cmova.rb +100 -106
  69. data/lib/fisk/instructions/cmovae.rb +100 -106
  70. data/lib/fisk/instructions/cmovb.rb +100 -106
  71. data/lib/fisk/instructions/cmovbe.rb +100 -106
  72. data/lib/fisk/instructions/cmovc.rb +100 -106
  73. data/lib/fisk/instructions/cmove.rb +100 -106
  74. data/lib/fisk/instructions/cmovg.rb +100 -106
  75. data/lib/fisk/instructions/cmovge.rb +100 -106
  76. data/lib/fisk/instructions/cmovl.rb +100 -106
  77. data/lib/fisk/instructions/cmovle.rb +100 -106
  78. data/lib/fisk/instructions/cmovna.rb +100 -106
  79. data/lib/fisk/instructions/cmovnae.rb +100 -106
  80. data/lib/fisk/instructions/cmovnb.rb +100 -106
  81. data/lib/fisk/instructions/cmovnbe.rb +100 -106
  82. data/lib/fisk/instructions/cmovnc.rb +100 -106
  83. data/lib/fisk/instructions/cmovne.rb +100 -106
  84. data/lib/fisk/instructions/cmovng.rb +100 -106
  85. data/lib/fisk/instructions/cmovnge.rb +100 -106
  86. data/lib/fisk/instructions/cmovnl.rb +100 -106
  87. data/lib/fisk/instructions/cmovnle.rb +100 -106
  88. data/lib/fisk/instructions/cmovno.rb +100 -106
  89. data/lib/fisk/instructions/cmovnp.rb +100 -106
  90. data/lib/fisk/instructions/cmovns.rb +100 -106
  91. data/lib/fisk/instructions/cmovnz.rb +100 -106
  92. data/lib/fisk/instructions/cmovo.rb +100 -106
  93. data/lib/fisk/instructions/cmovp.rb +100 -106
  94. data/lib/fisk/instructions/cmovpe.rb +100 -106
  95. data/lib/fisk/instructions/cmovpo.rb +100 -106
  96. data/lib/fisk/instructions/cmovs.rb +100 -106
  97. data/lib/fisk/instructions/cmovz.rb +100 -106
  98. data/lib/fisk/instructions/cmp.rb +505 -539
  99. data/lib/fisk/instructions/cmppd.rb +40 -42
  100. data/lib/fisk/instructions/cmpps.rb +38 -40
  101. data/lib/fisk/instructions/cmpsd.rb +40 -42
  102. data/lib/fisk/instructions/cmpss.rb +40 -42
  103. data/lib/fisk/instructions/cmpxchg.rb +132 -140
  104. data/lib/fisk/instructions/cmpxchg16b.rb +17 -18
  105. data/lib/fisk/instructions/cmpxchg8b.rb +17 -18
  106. data/lib/fisk/instructions/comisd.rb +36 -38
  107. data/lib/fisk/instructions/comiss.rb +34 -36
  108. data/lib/fisk/instructions/cpuid.rb +12 -13
  109. data/lib/fisk/instructions/cqo.rb +13 -14
  110. data/lib/fisk/instructions/crc32.rb +184 -194
  111. data/lib/fisk/instructions/cvtdq2pd.rb +36 -38
  112. data/lib/fisk/instructions/cvtdq2ps.rb +34 -36
  113. data/lib/fisk/instructions/cvtpd2dq.rb +36 -38
  114. data/lib/fisk/instructions/cvtpd2pi.rb +36 -38
  115. data/lib/fisk/instructions/cvtpd2ps.rb +36 -38
  116. data/lib/fisk/instructions/cvtpi2pd.rb +36 -38
  117. data/lib/fisk/instructions/cvtpi2ps.rb +34 -36
  118. data/lib/fisk/instructions/cvtps2dq.rb +36 -38
  119. data/lib/fisk/instructions/cvtps2pd.rb +34 -36
  120. data/lib/fisk/instructions/cvtps2pi.rb +34 -36
  121. data/lib/fisk/instructions/cvtsd2si.rb +70 -74
  122. data/lib/fisk/instructions/cvtsd2ss.rb +36 -38
  123. data/lib/fisk/instructions/cvtsi2sd.rb +70 -74
  124. data/lib/fisk/instructions/cvtsi2ss.rb +70 -74
  125. data/lib/fisk/instructions/cvtss2sd.rb +36 -38
  126. data/lib/fisk/instructions/cvtss2si.rb +70 -74
  127. data/lib/fisk/instructions/cvttpd2dq.rb +36 -38
  128. data/lib/fisk/instructions/cvttpd2pi.rb +36 -38
  129. data/lib/fisk/instructions/cvttps2dq.rb +36 -38
  130. data/lib/fisk/instructions/cvttps2pi.rb +34 -36
  131. data/lib/fisk/instructions/cvttsd2si.rb +70 -74
  132. data/lib/fisk/instructions/cvttss2si.rb +70 -74
  133. data/lib/fisk/instructions/cwd.rb +12 -13
  134. data/lib/fisk/instructions/cwde.rb +11 -12
  135. data/lib/fisk/instructions/dec.rb +116 -124
  136. data/lib/fisk/instructions/div.rb +116 -124
  137. data/lib/fisk/instructions/divpd.rb +36 -38
  138. data/lib/fisk/instructions/divps.rb +34 -36
  139. data/lib/fisk/instructions/divsd.rb +36 -38
  140. data/lib/fisk/instructions/divss.rb +36 -38
  141. data/lib/fisk/instructions/dppd.rb +42 -44
  142. data/lib/fisk/instructions/dpps.rb +42 -44
  143. data/lib/fisk/instructions/emms.rb +12 -13
  144. data/lib/fisk/instructions/extractps.rb +42 -44
  145. data/lib/fisk/instructions/extrq.rb +39 -41
  146. data/lib/fisk/instructions/femms.rb +12 -13
  147. data/lib/fisk/instructions/haddpd.rb +36 -38
  148. data/lib/fisk/instructions/haddps.rb +36 -38
  149. data/lib/fisk/instructions/hsubpd.rb +36 -38
  150. data/lib/fisk/instructions/hsubps.rb +36 -38
  151. data/lib/fisk/instructions/idiv.rb +116 -124
  152. data/lib/fisk/instructions/imul.rb +422 -448
  153. data/lib/fisk/instructions/inc.rb +116 -124
  154. data/lib/fisk/instructions/insertps.rb +42 -44
  155. data/lib/fisk/instructions/insertq.rb +40 -42
  156. data/lib/fisk/instructions/int.rb +23 -25
  157. data/lib/fisk/instructions/ja.rb +25 -27
  158. data/lib/fisk/instructions/jae.rb +25 -27
  159. data/lib/fisk/instructions/jb.rb +25 -27
  160. data/lib/fisk/instructions/jbe.rb +25 -27
  161. data/lib/fisk/instructions/jc.rb +25 -27
  162. data/lib/fisk/instructions/je.rb +25 -27
  163. data/lib/fisk/instructions/jecxz.rb +13 -14
  164. data/lib/fisk/instructions/jg.rb +25 -27
  165. data/lib/fisk/instructions/jge.rb +25 -27
  166. data/lib/fisk/instructions/jl.rb +25 -27
  167. data/lib/fisk/instructions/jle.rb +25 -27
  168. data/lib/fisk/instructions/jmp.rb +52 -56
  169. data/lib/fisk/instructions/jna.rb +25 -27
  170. data/lib/fisk/instructions/jnae.rb +25 -27
  171. data/lib/fisk/instructions/jnb.rb +25 -27
  172. data/lib/fisk/instructions/jnbe.rb +25 -27
  173. data/lib/fisk/instructions/jnc.rb +25 -27
  174. data/lib/fisk/instructions/jne.rb +25 -27
  175. data/lib/fisk/instructions/jng.rb +25 -27
  176. data/lib/fisk/instructions/jnge.rb +25 -27
  177. data/lib/fisk/instructions/jnl.rb +25 -27
  178. data/lib/fisk/instructions/jnle.rb +25 -27
  179. data/lib/fisk/instructions/jno.rb +25 -27
  180. data/lib/fisk/instructions/jnp.rb +25 -27
  181. data/lib/fisk/instructions/jns.rb +25 -27
  182. data/lib/fisk/instructions/jnz.rb +25 -27
  183. data/lib/fisk/instructions/jo.rb +25 -27
  184. data/lib/fisk/instructions/jp.rb +25 -27
  185. data/lib/fisk/instructions/jpe.rb +25 -27
  186. data/lib/fisk/instructions/jpo.rb +25 -27
  187. data/lib/fisk/instructions/jrcxz.rb +13 -14
  188. data/lib/fisk/instructions/js.rb +25 -27
  189. data/lib/fisk/instructions/jz.rb +25 -27
  190. data/lib/fisk/instructions/kaddb.rb +17 -18
  191. data/lib/fisk/instructions/kaddd.rb +17 -18
  192. data/lib/fisk/instructions/kaddq.rb +17 -18
  193. data/lib/fisk/instructions/kaddw.rb +17 -18
  194. data/lib/fisk/instructions/kandb.rb +17 -18
  195. data/lib/fisk/instructions/kandd.rb +17 -18
  196. data/lib/fisk/instructions/kandnb.rb +17 -18
  197. data/lib/fisk/instructions/kandnd.rb +17 -18
  198. data/lib/fisk/instructions/kandnq.rb +17 -18
  199. data/lib/fisk/instructions/kandnw.rb +17 -18
  200. data/lib/fisk/instructions/kandq.rb +17 -18
  201. data/lib/fisk/instructions/kandw.rb +17 -18
  202. data/lib/fisk/instructions/kmovb.rb +72 -77
  203. data/lib/fisk/instructions/kmovd.rb +72 -77
  204. data/lib/fisk/instructions/kmovq.rb +72 -77
  205. data/lib/fisk/instructions/kmovw.rb +72 -77
  206. data/lib/fisk/instructions/knotb.rb +16 -17
  207. data/lib/fisk/instructions/knotd.rb +16 -17
  208. data/lib/fisk/instructions/knotq.rb +16 -17
  209. data/lib/fisk/instructions/knotw.rb +16 -17
  210. data/lib/fisk/instructions/korb.rb +17 -18
  211. data/lib/fisk/instructions/kord.rb +17 -18
  212. data/lib/fisk/instructions/korq.rb +17 -18
  213. data/lib/fisk/instructions/kortestb.rb +16 -17
  214. data/lib/fisk/instructions/kortestd.rb +16 -17
  215. data/lib/fisk/instructions/kortestq.rb +16 -17
  216. data/lib/fisk/instructions/kortestw.rb +16 -17
  217. data/lib/fisk/instructions/korw.rb +17 -18
  218. data/lib/fisk/instructions/kshiftlb.rb +18 -19
  219. data/lib/fisk/instructions/kshiftld.rb +18 -19
  220. data/lib/fisk/instructions/kshiftlq.rb +18 -19
  221. data/lib/fisk/instructions/kshiftlw.rb +18 -19
  222. data/lib/fisk/instructions/kshiftrb.rb +18 -19
  223. data/lib/fisk/instructions/kshiftrd.rb +18 -19
  224. data/lib/fisk/instructions/kshiftrq.rb +18 -19
  225. data/lib/fisk/instructions/kshiftrw.rb +18 -19
  226. data/lib/fisk/instructions/ktestb.rb +16 -17
  227. data/lib/fisk/instructions/ktestd.rb +16 -17
  228. data/lib/fisk/instructions/ktestq.rb +16 -17
  229. data/lib/fisk/instructions/ktestw.rb +16 -17
  230. data/lib/fisk/instructions/kunpckbw.rb +17 -18
  231. data/lib/fisk/instructions/kunpckdq.rb +17 -18
  232. data/lib/fisk/instructions/kunpckwd.rb +17 -18
  233. data/lib/fisk/instructions/kxnorb.rb +17 -18
  234. data/lib/fisk/instructions/kxnord.rb +17 -18
  235. data/lib/fisk/instructions/kxnorq.rb +17 -18
  236. data/lib/fisk/instructions/kxnorw.rb +17 -18
  237. data/lib/fisk/instructions/kxorb.rb +17 -18
  238. data/lib/fisk/instructions/kxord.rb +17 -18
  239. data/lib/fisk/instructions/kxorq.rb +17 -18
  240. data/lib/fisk/instructions/kxorw.rb +17 -18
  241. data/lib/fisk/instructions/lddqu.rb +19 -20
  242. data/lib/fisk/instructions/ldmxcsr.rb +17 -18
  243. data/lib/fisk/instructions/lea.rb +48 -51
  244. data/lib/fisk/instructions/lfence.rb +13 -14
  245. data/lib/fisk/instructions/lzcnt.rb +106 -112
  246. data/lib/fisk/instructions/maskmovdqu.rb +19 -20
  247. data/lib/fisk/instructions/maskmovq.rb +18 -19
  248. data/lib/fisk/instructions/maxpd.rb +36 -38
  249. data/lib/fisk/instructions/maxps.rb +34 -36
  250. data/lib/fisk/instructions/maxsd.rb +36 -38
  251. data/lib/fisk/instructions/maxss.rb +36 -38
  252. data/lib/fisk/instructions/mfence.rb +13 -14
  253. data/lib/fisk/instructions/minpd.rb +36 -38
  254. data/lib/fisk/instructions/minps.rb +34 -36
  255. data/lib/fisk/instructions/minsd.rb +36 -38
  256. data/lib/fisk/instructions/minss.rb +36 -38
  257. data/lib/fisk/instructions/monitor.rb +13 -14
  258. data/lib/fisk/instructions/monitorx.rb +13 -14
  259. data/lib/fisk/instructions/mov.rb +450 -482
  260. data/lib/fisk/instructions/movapd.rb +65 -69
  261. data/lib/fisk/instructions/movaps.rb +61 -65
  262. data/lib/fisk/instructions/movbe.rb +106 -112
  263. data/lib/fisk/instructions/movd.rb +134 -142
  264. data/lib/fisk/instructions/movddup.rb +36 -38
  265. data/lib/fisk/instructions/movdq2q.rb +19 -20
  266. data/lib/fisk/instructions/movdqa.rb +65 -69
  267. data/lib/fisk/instructions/movdqu.rb +65 -69
  268. data/lib/fisk/instructions/movhlps.rb +18 -19
  269. data/lib/fisk/instructions/movhpd.rb +36 -38
  270. data/lib/fisk/instructions/movhps.rb +34 -36
  271. data/lib/fisk/instructions/movlhps.rb +18 -19
  272. data/lib/fisk/instructions/movlpd.rb +36 -38
  273. data/lib/fisk/instructions/movlps.rb +34 -36
  274. data/lib/fisk/instructions/movmskpd.rb +19 -20
  275. data/lib/fisk/instructions/movmskps.rb +18 -19
  276. data/lib/fisk/instructions/movntdq.rb +19 -20
  277. data/lib/fisk/instructions/movntdqa.rb +20 -21
  278. data/lib/fisk/instructions/movnti.rb +34 -36
  279. data/lib/fisk/instructions/movntpd.rb +19 -20
  280. data/lib/fisk/instructions/movntps.rb +18 -19
  281. data/lib/fisk/instructions/movntq.rb +18 -19
  282. data/lib/fisk/instructions/movntsd.rb +19 -20
  283. data/lib/fisk/instructions/movntss.rb +19 -20
  284. data/lib/fisk/instructions/movq.rb +236 -252
  285. data/lib/fisk/instructions/movq2dq.rb +19 -20
  286. data/lib/fisk/instructions/movsd.rb +65 -69
  287. data/lib/fisk/instructions/movshdup.rb +36 -38
  288. data/lib/fisk/instructions/movsldup.rb +36 -38
  289. data/lib/fisk/instructions/movss.rb +65 -69
  290. data/lib/fisk/instructions/movsx.rb +164 -174
  291. data/lib/fisk/instructions/movsxd.rb +32 -34
  292. data/lib/fisk/instructions/movupd.rb +65 -69
  293. data/lib/fisk/instructions/movups.rb +61 -65
  294. data/lib/fisk/instructions/movzx.rb +164 -174
  295. data/lib/fisk/instructions/mpsadbw.rb +42 -44
  296. data/lib/fisk/instructions/mul.rb +116 -124
  297. data/lib/fisk/instructions/mulpd.rb +36 -38
  298. data/lib/fisk/instructions/mulps.rb +34 -36
  299. data/lib/fisk/instructions/mulsd.rb +36 -38
  300. data/lib/fisk/instructions/mulss.rb +36 -38
  301. data/lib/fisk/instructions/mulx.rb +62 -66
  302. data/lib/fisk/instructions/mwait.rb +13 -14
  303. data/lib/fisk/instructions/mwaitx.rb +13 -14
  304. data/lib/fisk/instructions/neg.rb +116 -124
  305. data/lib/fisk/instructions/nop.rb +11 -12
  306. data/lib/fisk/instructions/not.rb +116 -124
  307. data/lib/fisk/instructions/or.rb +505 -539
  308. data/lib/fisk/instructions/orpd.rb +36 -38
  309. data/lib/fisk/instructions/orps.rb +34 -36
  310. data/lib/fisk/instructions/pabsb.rb +72 -76
  311. data/lib/fisk/instructions/pabsd.rb +72 -76
  312. data/lib/fisk/instructions/pabsw.rb +72 -76
  313. data/lib/fisk/instructions/packssdw.rb +68 -72
  314. data/lib/fisk/instructions/packsswb.rb +68 -72
  315. data/lib/fisk/instructions/packusdw.rb +38 -40
  316. data/lib/fisk/instructions/packuswb.rb +68 -72
  317. data/lib/fisk/instructions/paddb.rb +68 -72
  318. data/lib/fisk/instructions/paddd.rb +68 -72
  319. data/lib/fisk/instructions/paddq.rb +68 -72
  320. data/lib/fisk/instructions/paddsb.rb +68 -72
  321. data/lib/fisk/instructions/paddsw.rb +68 -72
  322. data/lib/fisk/instructions/paddusb.rb +68 -72
  323. data/lib/fisk/instructions/paddusw.rb +68 -72
  324. data/lib/fisk/instructions/paddw.rb +68 -72
  325. data/lib/fisk/instructions/palignr.rb +80 -84
  326. data/lib/fisk/instructions/pand.rb +68 -72
  327. data/lib/fisk/instructions/pandn.rb +68 -72
  328. data/lib/fisk/instructions/pause.rb +12 -13
  329. data/lib/fisk/instructions/pavgb.rb +68 -72
  330. data/lib/fisk/instructions/pavgusb.rb +36 -38
  331. data/lib/fisk/instructions/pavgw.rb +68 -72
  332. data/lib/fisk/instructions/pblendvb.rb +40 -42
  333. data/lib/fisk/instructions/pblendw.rb +42 -44
  334. data/lib/fisk/instructions/pclmulqdq.rb +42 -44
  335. data/lib/fisk/instructions/pcmpeqb.rb +68 -72
  336. data/lib/fisk/instructions/pcmpeqd.rb +68 -72
  337. data/lib/fisk/instructions/pcmpeqq.rb +38 -40
  338. data/lib/fisk/instructions/pcmpeqw.rb +68 -72
  339. data/lib/fisk/instructions/pcmpestri.rb +42 -44
  340. data/lib/fisk/instructions/pcmpestrm.rb +42 -44
  341. data/lib/fisk/instructions/pcmpgtb.rb +68 -72
  342. data/lib/fisk/instructions/pcmpgtd.rb +68 -72
  343. data/lib/fisk/instructions/pcmpgtq.rb +38 -40
  344. data/lib/fisk/instructions/pcmpgtw.rb +68 -72
  345. data/lib/fisk/instructions/pcmpistri.rb +42 -44
  346. data/lib/fisk/instructions/pcmpistrm.rb +42 -44
  347. data/lib/fisk/instructions/pdep.rb +62 -66
  348. data/lib/fisk/instructions/pext.rb +62 -66
  349. data/lib/fisk/instructions/pextrb.rb +42 -44
  350. data/lib/fisk/instructions/pextrd.rb +42 -44
  351. data/lib/fisk/instructions/pextrq.rb +42 -44
  352. data/lib/fisk/instructions/pextrw.rb +73 -77
  353. data/lib/fisk/instructions/pf2id.rb +36 -38
  354. data/lib/fisk/instructions/pf2iw.rb +36 -38
  355. data/lib/fisk/instructions/pfacc.rb +36 -38
  356. data/lib/fisk/instructions/pfadd.rb +36 -38
  357. data/lib/fisk/instructions/pfcmpeq.rb +36 -38
  358. data/lib/fisk/instructions/pfcmpge.rb +36 -38
  359. data/lib/fisk/instructions/pfcmpgt.rb +36 -38
  360. data/lib/fisk/instructions/pfmax.rb +36 -38
  361. data/lib/fisk/instructions/pfmin.rb +36 -38
  362. data/lib/fisk/instructions/pfmul.rb +36 -38
  363. data/lib/fisk/instructions/pfnacc.rb +36 -38
  364. data/lib/fisk/instructions/pfpnacc.rb +36 -38
  365. data/lib/fisk/instructions/pfrcp.rb +36 -38
  366. data/lib/fisk/instructions/pfrcpit1.rb +36 -38
  367. data/lib/fisk/instructions/pfrcpit2.rb +36 -38
  368. data/lib/fisk/instructions/pfrsqit1.rb +36 -38
  369. data/lib/fisk/instructions/pfrsqrt.rb +36 -38
  370. data/lib/fisk/instructions/pfsub.rb +36 -38
  371. data/lib/fisk/instructions/pfsubr.rb +36 -38
  372. data/lib/fisk/instructions/phaddd.rb +72 -76
  373. data/lib/fisk/instructions/phaddsw.rb +72 -76
  374. data/lib/fisk/instructions/phaddw.rb +72 -76
  375. data/lib/fisk/instructions/phminposuw.rb +38 -40
  376. data/lib/fisk/instructions/phsubd.rb +72 -76
  377. data/lib/fisk/instructions/phsubsw.rb +72 -76
  378. data/lib/fisk/instructions/phsubw.rb +72 -76
  379. data/lib/fisk/instructions/pi2fd.rb +36 -38
  380. data/lib/fisk/instructions/pi2fw.rb +36 -38
  381. data/lib/fisk/instructions/pinsrb.rb +42 -44
  382. data/lib/fisk/instructions/pinsrd.rb +42 -44
  383. data/lib/fisk/instructions/pinsrq.rb +42 -44
  384. data/lib/fisk/instructions/pinsrw.rb +76 -80
  385. data/lib/fisk/instructions/pmaddubsw.rb +72 -76
  386. data/lib/fisk/instructions/pmaddwd.rb +68 -72
  387. data/lib/fisk/instructions/pmaxsb.rb +38 -40
  388. data/lib/fisk/instructions/pmaxsd.rb +38 -40
  389. data/lib/fisk/instructions/pmaxsw.rb +68 -72
  390. data/lib/fisk/instructions/pmaxub.rb +68 -72
  391. data/lib/fisk/instructions/pmaxud.rb +38 -40
  392. data/lib/fisk/instructions/pmaxuw.rb +38 -40
  393. data/lib/fisk/instructions/pminsb.rb +38 -40
  394. data/lib/fisk/instructions/pminsd.rb +38 -40
  395. data/lib/fisk/instructions/pminsw.rb +68 -72
  396. data/lib/fisk/instructions/pminub.rb +68 -72
  397. data/lib/fisk/instructions/pminud.rb +38 -40
  398. data/lib/fisk/instructions/pminuw.rb +38 -40
  399. data/lib/fisk/instructions/pmovmskb.rb +35 -37
  400. data/lib/fisk/instructions/pmovsxbd.rb +38 -40
  401. data/lib/fisk/instructions/pmovsxbq.rb +38 -40
  402. data/lib/fisk/instructions/pmovsxbw.rb +38 -40
  403. data/lib/fisk/instructions/pmovsxdq.rb +38 -40
  404. data/lib/fisk/instructions/pmovsxwd.rb +38 -40
  405. data/lib/fisk/instructions/pmovsxwq.rb +38 -40
  406. data/lib/fisk/instructions/pmovzxbd.rb +38 -40
  407. data/lib/fisk/instructions/pmovzxbq.rb +38 -40
  408. data/lib/fisk/instructions/pmovzxbw.rb +38 -40
  409. data/lib/fisk/instructions/pmovzxdq.rb +38 -40
  410. data/lib/fisk/instructions/pmovzxwd.rb +38 -40
  411. data/lib/fisk/instructions/pmovzxwq.rb +38 -40
  412. data/lib/fisk/instructions/pmuldq.rb +38 -40
  413. data/lib/fisk/instructions/pmulhrsw.rb +72 -76
  414. data/lib/fisk/instructions/pmulhrw.rb +36 -38
  415. data/lib/fisk/instructions/pmulhuw.rb +68 -72
  416. data/lib/fisk/instructions/pmulhw.rb +68 -72
  417. data/lib/fisk/instructions/pmulld.rb +38 -40
  418. data/lib/fisk/instructions/pmullw.rb +68 -72
  419. data/lib/fisk/instructions/pmuludq.rb +68 -72
  420. data/lib/fisk/instructions/pop.rb +77 -83
  421. data/lib/fisk/instructions/popcnt.rb +106 -112
  422. data/lib/fisk/instructions/por.rb +68 -72
  423. data/lib/fisk/instructions/prefetch.rb +17 -18
  424. data/lib/fisk/instructions/prefetchnta.rb +17 -18
  425. data/lib/fisk/instructions/prefetcht0.rb +17 -18
  426. data/lib/fisk/instructions/prefetcht1.rb +17 -18
  427. data/lib/fisk/instructions/prefetcht2.rb +17 -18
  428. data/lib/fisk/instructions/prefetchw.rb +17 -18
  429. data/lib/fisk/instructions/prefetchwt1.rb +17 -18
  430. data/lib/fisk/instructions/psadbw.rb +68 -72
  431. data/lib/fisk/instructions/pshufb.rb +72 -76
  432. data/lib/fisk/instructions/pshufd.rb +40 -42
  433. data/lib/fisk/instructions/pshufhw.rb +40 -42
  434. data/lib/fisk/instructions/pshuflw.rb +40 -42
  435. data/lib/fisk/instructions/pshufw.rb +38 -40
  436. data/lib/fisk/instructions/psignb.rb +72 -76
  437. data/lib/fisk/instructions/psignd.rb +72 -76
  438. data/lib/fisk/instructions/psignw.rb +72 -76
  439. data/lib/fisk/instructions/pslld.rb +103 -109
  440. data/lib/fisk/instructions/pslldq.rb +20 -21
  441. data/lib/fisk/instructions/psllq.rb +103 -109
  442. data/lib/fisk/instructions/psllw.rb +103 -109
  443. data/lib/fisk/instructions/psrad.rb +103 -109
  444. data/lib/fisk/instructions/psraw.rb +103 -109
  445. data/lib/fisk/instructions/psrld.rb +103 -109
  446. data/lib/fisk/instructions/psrldq.rb +20 -21
  447. data/lib/fisk/instructions/psrlq.rb +103 -109
  448. data/lib/fisk/instructions/psrlw.rb +103 -109
  449. data/lib/fisk/instructions/psubb.rb +68 -72
  450. data/lib/fisk/instructions/psubd.rb +68 -72
  451. data/lib/fisk/instructions/psubq.rb +68 -72
  452. data/lib/fisk/instructions/psubsb.rb +68 -72
  453. data/lib/fisk/instructions/psubsw.rb +68 -72
  454. data/lib/fisk/instructions/psubusb.rb +68 -72
  455. data/lib/fisk/instructions/psubusw.rb +68 -72
  456. data/lib/fisk/instructions/psubw.rb +68 -72
  457. data/lib/fisk/instructions/pswapd.rb +36 -38
  458. data/lib/fisk/instructions/ptest.rb +38 -40
  459. data/lib/fisk/instructions/punpckhbw.rb +68 -72
  460. data/lib/fisk/instructions/punpckhdq.rb +68 -72
  461. data/lib/fisk/instructions/punpckhqdq.rb +36 -38
  462. data/lib/fisk/instructions/punpckhwd.rb +68 -72
  463. data/lib/fisk/instructions/punpcklbw.rb +68 -72
  464. data/lib/fisk/instructions/punpckldq.rb +68 -72
  465. data/lib/fisk/instructions/punpcklqdq.rb +36 -38
  466. data/lib/fisk/instructions/punpcklwd.rb +68 -72
  467. data/lib/fisk/instructions/push.rb +99 -107
  468. data/lib/fisk/instructions/pxor.rb +68 -72
  469. data/lib/fisk/instructions/rcl.rb +376 -400
  470. data/lib/fisk/instructions/rcpps.rb +34 -36
  471. data/lib/fisk/instructions/rcpss.rb +36 -38
  472. data/lib/fisk/instructions/rcr.rb +376 -400
  473. data/lib/fisk/instructions/rdrand.rb +48 -51
  474. data/lib/fisk/instructions/rdseed.rb +48 -51
  475. data/lib/fisk/instructions/rdtsc.rb +12 -13
  476. data/lib/fisk/instructions/rdtscp.rb +13 -14
  477. data/lib/fisk/instructions/ret.rb +22 -24
  478. data/lib/fisk/instructions/rol.rb +376 -400
  479. data/lib/fisk/instructions/ror.rb +376 -400
  480. data/lib/fisk/instructions/rorx.rb +66 -70
  481. data/lib/fisk/instructions/roundpd.rb +42 -44
  482. data/lib/fisk/instructions/roundps.rb +42 -44
  483. data/lib/fisk/instructions/roundsd.rb +42 -44
  484. data/lib/fisk/instructions/roundss.rb +42 -44
  485. data/lib/fisk/instructions/rsqrtps.rb +34 -36
  486. data/lib/fisk/instructions/rsqrtss.rb +36 -38
  487. data/lib/fisk/instructions/sal.rb +376 -400
  488. data/lib/fisk/instructions/sar.rb +376 -400
  489. data/lib/fisk/instructions/sarx.rb +62 -66
  490. data/lib/fisk/instructions/sbb.rb +505 -539
  491. data/lib/fisk/instructions/seta.rb +34 -36
  492. data/lib/fisk/instructions/setae.rb +34 -36
  493. data/lib/fisk/instructions/setb.rb +34 -36
  494. data/lib/fisk/instructions/setbe.rb +34 -36
  495. data/lib/fisk/instructions/setc.rb +34 -36
  496. data/lib/fisk/instructions/sete.rb +34 -36
  497. data/lib/fisk/instructions/setg.rb +34 -36
  498. data/lib/fisk/instructions/setge.rb +34 -36
  499. data/lib/fisk/instructions/setl.rb +34 -36
  500. data/lib/fisk/instructions/setle.rb +34 -36
  501. data/lib/fisk/instructions/setna.rb +34 -36
  502. data/lib/fisk/instructions/setnae.rb +34 -36
  503. data/lib/fisk/instructions/setnb.rb +34 -36
  504. data/lib/fisk/instructions/setnbe.rb +34 -36
  505. data/lib/fisk/instructions/setnc.rb +34 -36
  506. data/lib/fisk/instructions/setne.rb +34 -36
  507. data/lib/fisk/instructions/setng.rb +34 -36
  508. data/lib/fisk/instructions/setnge.rb +34 -36
  509. data/lib/fisk/instructions/setnl.rb +34 -36
  510. data/lib/fisk/instructions/setnle.rb +34 -36
  511. data/lib/fisk/instructions/setno.rb +34 -36
  512. data/lib/fisk/instructions/setnp.rb +34 -36
  513. data/lib/fisk/instructions/setns.rb +34 -36
  514. data/lib/fisk/instructions/setnz.rb +34 -36
  515. data/lib/fisk/instructions/seto.rb +34 -36
  516. data/lib/fisk/instructions/setp.rb +34 -36
  517. data/lib/fisk/instructions/setpe.rb +34 -36
  518. data/lib/fisk/instructions/setpo.rb +34 -36
  519. data/lib/fisk/instructions/sets.rb +34 -36
  520. data/lib/fisk/instructions/setz.rb +34 -36
  521. data/lib/fisk/instructions/sfence.rb +13 -14
  522. data/lib/fisk/instructions/sha1msg1.rb +36 -38
  523. data/lib/fisk/instructions/sha1msg2.rb +36 -38
  524. data/lib/fisk/instructions/sha1nexte.rb +36 -38
  525. data/lib/fisk/instructions/sha1rnds4.rb +40 -42
  526. data/lib/fisk/instructions/sha256msg1.rb +36 -38
  527. data/lib/fisk/instructions/sha256msg2.rb +36 -38
  528. data/lib/fisk/instructions/sha256rnds2.rb +38 -40
  529. data/lib/fisk/instructions/shl.rb +376 -400
  530. data/lib/fisk/instructions/shld.rb +216 -228
  531. data/lib/fisk/instructions/shlx.rb +62 -66
  532. data/lib/fisk/instructions/shr.rb +376 -400
  533. data/lib/fisk/instructions/shrd.rb +216 -228
  534. data/lib/fisk/instructions/shrx.rb +62 -66
  535. data/lib/fisk/instructions/shufpd.rb +40 -42
  536. data/lib/fisk/instructions/shufps.rb +38 -40
  537. data/lib/fisk/instructions/sqrtpd.rb +36 -38
  538. data/lib/fisk/instructions/sqrtps.rb +34 -36
  539. data/lib/fisk/instructions/sqrtsd.rb +36 -38
  540. data/lib/fisk/instructions/sqrtss.rb +36 -38
  541. data/lib/fisk/instructions/stc.rb +11 -12
  542. data/lib/fisk/instructions/std.rb +11 -12
  543. data/lib/fisk/instructions/stmxcsr.rb +17 -18
  544. data/lib/fisk/instructions/sub.rb +505 -539
  545. data/lib/fisk/instructions/subpd.rb +36 -38
  546. data/lib/fisk/instructions/subps.rb +34 -36
  547. data/lib/fisk/instructions/subsd.rb +36 -38
  548. data/lib/fisk/instructions/subss.rb +36 -38
  549. data/lib/fisk/instructions/syscall.rb +12 -13
  550. data/lib/fisk/instructions/t1mskc.rb +58 -62
  551. data/lib/fisk/instructions/test.rb +305 -325
  552. data/lib/fisk/instructions/tzcnt.rb +106 -112
  553. data/lib/fisk/instructions/tzmsk.rb +58 -62
  554. data/lib/fisk/instructions/ucomisd.rb +36 -38
  555. data/lib/fisk/instructions/ucomiss.rb +34 -36
  556. data/lib/fisk/instructions/ud2.rb +12 -13
  557. data/lib/fisk/instructions/unpckhpd.rb +36 -38
  558. data/lib/fisk/instructions/unpckhps.rb +34 -36
  559. data/lib/fisk/instructions/unpcklpd.rb +36 -38
  560. data/lib/fisk/instructions/unpcklps.rb +34 -36
  561. data/lib/fisk/instructions/vaddpd.rb +153 -163
  562. data/lib/fisk/instructions/vaddps.rb +153 -163
  563. data/lib/fisk/instructions/vaddsd.rb +63 -67
  564. data/lib/fisk/instructions/vaddss.rb +63 -67
  565. data/lib/fisk/instructions/vaddsubpd.rb +62 -66
  566. data/lib/fisk/instructions/vaddsubps.rb +62 -66
  567. data/lib/fisk/instructions/vaesdec.rb +32 -34
  568. data/lib/fisk/instructions/vaesdeclast.rb +32 -34
  569. data/lib/fisk/instructions/vaesenc.rb +32 -34
  570. data/lib/fisk/instructions/vaesenclast.rb +32 -34
  571. data/lib/fisk/instructions/vaesimc.rb +30 -32
  572. data/lib/fisk/instructions/vaeskeygenassist.rb +34 -36
  573. data/lib/fisk/instructions/valignd.rb +104 -110
  574. data/lib/fisk/instructions/valignq.rb +104 -110
  575. data/lib/fisk/instructions/vandnpd.rb +152 -162
  576. data/lib/fisk/instructions/vandnps.rb +152 -162
  577. data/lib/fisk/instructions/vandpd.rb +152 -162
  578. data/lib/fisk/instructions/vandps.rb +152 -162
  579. data/lib/fisk/instructions/vblendmpd.rb +92 -98
  580. data/lib/fisk/instructions/vblendmps.rb +92 -98
  581. data/lib/fisk/instructions/vblendpd.rb +70 -74
  582. data/lib/fisk/instructions/vblendps.rb +70 -74
  583. data/lib/fisk/instructions/vblendvpd.rb +70 -74
  584. data/lib/fisk/instructions/vblendvps.rb +70 -74
  585. data/lib/fisk/instructions/vbroadcastf128.rb +16 -17
  586. data/lib/fisk/instructions/vbroadcastf32x2.rb +58 -62
  587. data/lib/fisk/instructions/vbroadcastf32x4.rb +30 -32
  588. data/lib/fisk/instructions/vbroadcastf32x8.rb +16 -17
  589. data/lib/fisk/instructions/vbroadcastf64x2.rb +30 -32
  590. data/lib/fisk/instructions/vbroadcastf64x4.rb +16 -17
  591. data/lib/fisk/instructions/vbroadcasti128.rb +16 -17
  592. data/lib/fisk/instructions/vbroadcasti32x2.rb +86 -92
  593. data/lib/fisk/instructions/vbroadcasti32x4.rb +30 -32
  594. data/lib/fisk/instructions/vbroadcasti32x8.rb +16 -17
  595. data/lib/fisk/instructions/vbroadcasti64x2.rb +30 -32
  596. data/lib/fisk/instructions/vbroadcasti64x4.rb +16 -17
  597. data/lib/fisk/instructions/vbroadcastsd.rb +86 -92
  598. data/lib/fisk/instructions/vbroadcastss.rb +114 -122
  599. data/lib/fisk/instructions/vcmppd.rb +173 -183
  600. data/lib/fisk/instructions/vcmpps.rb +173 -183
  601. data/lib/fisk/instructions/vcmpsd.rb +71 -75
  602. data/lib/fisk/instructions/vcmpss.rb +71 -75
  603. data/lib/fisk/instructions/vcomisd.rb +59 -63
  604. data/lib/fisk/instructions/vcomiss.rb +59 -63
  605. data/lib/fisk/instructions/vcompresspd.rb +86 -92
  606. data/lib/fisk/instructions/vcompressps.rb +86 -92
  607. data/lib/fisk/instructions/vcvtdq2pd.rb +142 -152
  608. data/lib/fisk/instructions/vcvtdq2ps.rb +143 -153
  609. data/lib/fisk/instructions/vcvtpd2dq.rb +143 -153
  610. data/lib/fisk/instructions/vcvtpd2ps.rb +143 -153
  611. data/lib/fisk/instructions/vcvtpd2qq.rb +87 -93
  612. data/lib/fisk/instructions/vcvtpd2udq.rb +87 -93
  613. data/lib/fisk/instructions/vcvtpd2uqq.rb +87 -93
  614. data/lib/fisk/instructions/vcvtph2ps.rb +143 -153
  615. data/lib/fisk/instructions/vcvtps2dq.rb +143 -153
  616. data/lib/fisk/instructions/vcvtps2pd.rb +143 -153
  617. data/lib/fisk/instructions/vcvtps2ph.rb +163 -173
  618. data/lib/fisk/instructions/vcvtps2qq.rb +87 -93
  619. data/lib/fisk/instructions/vcvtps2udq.rb +87 -93
  620. data/lib/fisk/instructions/vcvtps2uqq.rb +87 -93
  621. data/lib/fisk/instructions/vcvtqq2pd.rb +87 -93
  622. data/lib/fisk/instructions/vcvtqq2ps.rb +87 -93
  623. data/lib/fisk/instructions/vcvtsd2si.rb +116 -124
  624. data/lib/fisk/instructions/vcvtsd2ss.rb +63 -67
  625. data/lib/fisk/instructions/vcvtsd2usi.rb +60 -64
  626. data/lib/fisk/instructions/vcvtsi2sd.rb +123 -131
  627. data/lib/fisk/instructions/vcvtsi2ss.rb +124 -132
  628. data/lib/fisk/instructions/vcvtss2sd.rb +63 -67
  629. data/lib/fisk/instructions/vcvtss2si.rb +116 -124
  630. data/lib/fisk/instructions/vcvtss2usi.rb +60 -64
  631. data/lib/fisk/instructions/vcvttpd2dq.rb +143 -153
  632. data/lib/fisk/instructions/vcvttpd2qq.rb +87 -93
  633. data/lib/fisk/instructions/vcvttpd2udq.rb +87 -93
  634. data/lib/fisk/instructions/vcvttpd2uqq.rb +87 -93
  635. data/lib/fisk/instructions/vcvttps2dq.rb +143 -153
  636. data/lib/fisk/instructions/vcvttps2qq.rb +87 -93
  637. data/lib/fisk/instructions/vcvttps2udq.rb +87 -93
  638. data/lib/fisk/instructions/vcvttps2uqq.rb +87 -93
  639. data/lib/fisk/instructions/vcvttsd2si.rb +116 -124
  640. data/lib/fisk/instructions/vcvttsd2usi.rb +60 -64
  641. data/lib/fisk/instructions/vcvttss2si.rb +116 -124
  642. data/lib/fisk/instructions/vcvttss2usi.rb +60 -64
  643. data/lib/fisk/instructions/vcvtudq2pd.rb +86 -92
  644. data/lib/fisk/instructions/vcvtudq2ps.rb +87 -93
  645. data/lib/fisk/instructions/vcvtuqq2pd.rb +87 -93
  646. data/lib/fisk/instructions/vcvtuqq2ps.rb +87 -93
  647. data/lib/fisk/instructions/vcvtusi2sd.rb +63 -67
  648. data/lib/fisk/instructions/vcvtusi2ss.rb +64 -68
  649. data/lib/fisk/instructions/vdbpsadbw.rb +104 -110
  650. data/lib/fisk/instructions/vdivpd.rb +153 -163
  651. data/lib/fisk/instructions/vdivps.rb +153 -163
  652. data/lib/fisk/instructions/vdivsd.rb +63 -67
  653. data/lib/fisk/instructions/vdivss.rb +63 -67
  654. data/lib/fisk/instructions/vdppd.rb +36 -38
  655. data/lib/fisk/instructions/vdpps.rb +70 -74
  656. data/lib/fisk/instructions/vexp2pd.rb +31 -33
  657. data/lib/fisk/instructions/vexp2ps.rb +31 -33
  658. data/lib/fisk/instructions/vexpandpd.rb +86 -92
  659. data/lib/fisk/instructions/vexpandps.rb +86 -92
  660. data/lib/fisk/instructions/vextractf128.rb +34 -36
  661. data/lib/fisk/instructions/vextractf32x4.rb +66 -70
  662. data/lib/fisk/instructions/vextractf32x8.rb +34 -36
  663. data/lib/fisk/instructions/vextractf64x2.rb +66 -70
  664. data/lib/fisk/instructions/vextractf64x4.rb +34 -36
  665. data/lib/fisk/instructions/vextracti128.rb +34 -36
  666. data/lib/fisk/instructions/vextracti32x4.rb +66 -70
  667. data/lib/fisk/instructions/vextracti32x8.rb +34 -36
  668. data/lib/fisk/instructions/vextracti64x2.rb +66 -70
  669. data/lib/fisk/instructions/vextracti64x4.rb +34 -36
  670. data/lib/fisk/instructions/vextractps.rb +66 -70
  671. data/lib/fisk/instructions/vfixupimmpd.rb +105 -111
  672. data/lib/fisk/instructions/vfixupimmps.rb +105 -111
  673. data/lib/fisk/instructions/vfixupimmsd.rb +37 -39
  674. data/lib/fisk/instructions/vfixupimmss.rb +37 -39
  675. data/lib/fisk/instructions/vfmadd132pd.rb +153 -163
  676. data/lib/fisk/instructions/vfmadd132ps.rb +153 -163
  677. data/lib/fisk/instructions/vfmadd132sd.rb +63 -67
  678. data/lib/fisk/instructions/vfmadd132ss.rb +63 -67
  679. data/lib/fisk/instructions/vfmadd213pd.rb +153 -163
  680. data/lib/fisk/instructions/vfmadd213ps.rb +153 -163
  681. data/lib/fisk/instructions/vfmadd213sd.rb +63 -67
  682. data/lib/fisk/instructions/vfmadd213ss.rb +63 -67
  683. data/lib/fisk/instructions/vfmadd231pd.rb +153 -163
  684. data/lib/fisk/instructions/vfmadd231ps.rb +153 -163
  685. data/lib/fisk/instructions/vfmadd231sd.rb +63 -67
  686. data/lib/fisk/instructions/vfmadd231ss.rb +63 -67
  687. data/lib/fisk/instructions/vfmaddpd.rb +124 -132
  688. data/lib/fisk/instructions/vfmaddps.rb +124 -132
  689. data/lib/fisk/instructions/vfmaddsd.rb +63 -67
  690. data/lib/fisk/instructions/vfmaddss.rb +63 -67
  691. data/lib/fisk/instructions/vfmaddsub132pd.rb +153 -163
  692. data/lib/fisk/instructions/vfmaddsub132ps.rb +153 -163
  693. data/lib/fisk/instructions/vfmaddsub213pd.rb +153 -163
  694. data/lib/fisk/instructions/vfmaddsub213ps.rb +153 -163
  695. data/lib/fisk/instructions/vfmaddsub231pd.rb +153 -163
  696. data/lib/fisk/instructions/vfmaddsub231ps.rb +153 -163
  697. data/lib/fisk/instructions/vfmaddsubpd.rb +124 -132
  698. data/lib/fisk/instructions/vfmaddsubps.rb +124 -132
  699. data/lib/fisk/instructions/vfmsub132pd.rb +153 -163
  700. data/lib/fisk/instructions/vfmsub132ps.rb +153 -163
  701. data/lib/fisk/instructions/vfmsub132sd.rb +63 -67
  702. data/lib/fisk/instructions/vfmsub132ss.rb +63 -67
  703. data/lib/fisk/instructions/vfmsub213pd.rb +153 -163
  704. data/lib/fisk/instructions/vfmsub213ps.rb +153 -163
  705. data/lib/fisk/instructions/vfmsub213sd.rb +63 -67
  706. data/lib/fisk/instructions/vfmsub213ss.rb +63 -67
  707. data/lib/fisk/instructions/vfmsub231pd.rb +153 -163
  708. data/lib/fisk/instructions/vfmsub231ps.rb +153 -163
  709. data/lib/fisk/instructions/vfmsub231sd.rb +63 -67
  710. data/lib/fisk/instructions/vfmsub231ss.rb +63 -67
  711. data/lib/fisk/instructions/vfmsubadd132pd.rb +153 -163
  712. data/lib/fisk/instructions/vfmsubadd132ps.rb +153 -163
  713. data/lib/fisk/instructions/vfmsubadd213pd.rb +153 -163
  714. data/lib/fisk/instructions/vfmsubadd213ps.rb +153 -163
  715. data/lib/fisk/instructions/vfmsubadd231pd.rb +153 -163
  716. data/lib/fisk/instructions/vfmsubadd231ps.rb +153 -163
  717. data/lib/fisk/instructions/vfmsubaddpd.rb +124 -132
  718. data/lib/fisk/instructions/vfmsubaddps.rb +124 -132
  719. data/lib/fisk/instructions/vfmsubpd.rb +124 -132
  720. data/lib/fisk/instructions/vfmsubps.rb +124 -132
  721. data/lib/fisk/instructions/vfmsubsd.rb +63 -67
  722. data/lib/fisk/instructions/vfmsubss.rb +63 -67
  723. data/lib/fisk/instructions/vfnmadd132pd.rb +153 -163
  724. data/lib/fisk/instructions/vfnmadd132ps.rb +153 -163
  725. data/lib/fisk/instructions/vfnmadd132sd.rb +63 -67
  726. data/lib/fisk/instructions/vfnmadd132ss.rb +63 -67
  727. data/lib/fisk/instructions/vfnmadd213pd.rb +153 -163
  728. data/lib/fisk/instructions/vfnmadd213ps.rb +153 -163
  729. data/lib/fisk/instructions/vfnmadd213sd.rb +63 -67
  730. data/lib/fisk/instructions/vfnmadd213ss.rb +63 -67
  731. data/lib/fisk/instructions/vfnmadd231pd.rb +153 -163
  732. data/lib/fisk/instructions/vfnmadd231ps.rb +153 -163
  733. data/lib/fisk/instructions/vfnmadd231sd.rb +63 -67
  734. data/lib/fisk/instructions/vfnmadd231ss.rb +63 -67
  735. data/lib/fisk/instructions/vfnmaddpd.rb +124 -132
  736. data/lib/fisk/instructions/vfnmaddps.rb +124 -132
  737. data/lib/fisk/instructions/vfnmaddsd.rb +63 -67
  738. data/lib/fisk/instructions/vfnmaddss.rb +63 -67
  739. data/lib/fisk/instructions/vfnmsub132pd.rb +153 -163
  740. data/lib/fisk/instructions/vfnmsub132ps.rb +153 -163
  741. data/lib/fisk/instructions/vfnmsub132sd.rb +63 -67
  742. data/lib/fisk/instructions/vfnmsub132ss.rb +63 -67
  743. data/lib/fisk/instructions/vfnmsub213pd.rb +153 -163
  744. data/lib/fisk/instructions/vfnmsub213ps.rb +153 -163
  745. data/lib/fisk/instructions/vfnmsub213sd.rb +63 -67
  746. data/lib/fisk/instructions/vfnmsub213ss.rb +63 -67
  747. data/lib/fisk/instructions/vfnmsub231pd.rb +153 -163
  748. data/lib/fisk/instructions/vfnmsub231ps.rb +153 -163
  749. data/lib/fisk/instructions/vfnmsub231sd.rb +63 -67
  750. data/lib/fisk/instructions/vfnmsub231ss.rb +63 -67
  751. data/lib/fisk/instructions/vfnmsubpd.rb +124 -132
  752. data/lib/fisk/instructions/vfnmsubps.rb +124 -132
  753. data/lib/fisk/instructions/vfnmsubsd.rb +63 -67
  754. data/lib/fisk/instructions/vfnmsubss.rb +63 -67
  755. data/lib/fisk/instructions/vfpclasspd.rb +98 -104
  756. data/lib/fisk/instructions/vfpclassps.rb +98 -104
  757. data/lib/fisk/instructions/vfpclasssd.rb +34 -36
  758. data/lib/fisk/instructions/vfpclassss.rb +34 -36
  759. data/lib/fisk/instructions/vfrczpd.rb +58 -62
  760. data/lib/fisk/instructions/vfrczps.rb +58 -62
  761. data/lib/fisk/instructions/vfrczsd.rb +30 -32
  762. data/lib/fisk/instructions/vfrczss.rb +30 -32
  763. data/lib/fisk/instructions/vgatherdpd.rb +74 -79
  764. data/lib/fisk/instructions/vgatherdps.rb +74 -79
  765. data/lib/fisk/instructions/vgatherpf0dpd.rb +15 -16
  766. data/lib/fisk/instructions/vgatherpf0dps.rb +15 -16
  767. data/lib/fisk/instructions/vgatherpf0qpd.rb +15 -16
  768. data/lib/fisk/instructions/vgatherpf0qps.rb +15 -16
  769. data/lib/fisk/instructions/vgatherpf1dpd.rb +15 -16
  770. data/lib/fisk/instructions/vgatherpf1dps.rb +15 -16
  771. data/lib/fisk/instructions/vgatherpf1qpd.rb +15 -16
  772. data/lib/fisk/instructions/vgatherpf1qps.rb +15 -16
  773. data/lib/fisk/instructions/vgatherqpd.rb +74 -79
  774. data/lib/fisk/instructions/vgatherqps.rb +74 -79
  775. data/lib/fisk/instructions/vgetexppd.rb +87 -93
  776. data/lib/fisk/instructions/vgetexpps.rb +87 -93
  777. data/lib/fisk/instructions/vgetexpsd.rb +33 -35
  778. data/lib/fisk/instructions/vgetexpss.rb +33 -35
  779. data/lib/fisk/instructions/vgetmantpd.rb +99 -105
  780. data/lib/fisk/instructions/vgetmantps.rb +99 -105
  781. data/lib/fisk/instructions/vgetmantsd.rb +37 -39
  782. data/lib/fisk/instructions/vgetmantss.rb +37 -39
  783. data/lib/fisk/instructions/vhaddpd.rb +62 -66
  784. data/lib/fisk/instructions/vhaddps.rb +62 -66
  785. data/lib/fisk/instructions/vhsubpd.rb +62 -66
  786. data/lib/fisk/instructions/vhsubps.rb +62 -66
  787. data/lib/fisk/instructions/vinsertf128.rb +36 -38
  788. data/lib/fisk/instructions/vinsertf32x4.rb +70 -74
  789. data/lib/fisk/instructions/vinsertf32x8.rb +36 -38
  790. data/lib/fisk/instructions/vinsertf64x2.rb +70 -74
  791. data/lib/fisk/instructions/vinsertf64x4.rb +36 -38
  792. data/lib/fisk/instructions/vinserti128.rb +36 -38
  793. data/lib/fisk/instructions/vinserti32x4.rb +70 -74
  794. data/lib/fisk/instructions/vinserti32x8.rb +36 -38
  795. data/lib/fisk/instructions/vinserti64x2.rb +70 -74
  796. data/lib/fisk/instructions/vinserti64x4.rb +36 -38
  797. data/lib/fisk/instructions/vinsertps.rb +70 -74
  798. data/lib/fisk/instructions/vlddqu.rb +30 -32
  799. data/lib/fisk/instructions/vldmxcsr.rb +15 -16
  800. data/lib/fisk/instructions/vmaskmovdqu.rb +16 -17
  801. data/lib/fisk/instructions/vmaskmovpd.rb +62 -66
  802. data/lib/fisk/instructions/vmaskmovps.rb +62 -66
  803. data/lib/fisk/instructions/vmaxpd.rb +153 -163
  804. data/lib/fisk/instructions/vmaxps.rb +153 -163
  805. data/lib/fisk/instructions/vmaxsd.rb +63 -67
  806. data/lib/fisk/instructions/vmaxss.rb +63 -67
  807. data/lib/fisk/instructions/vminpd.rb +153 -163
  808. data/lib/fisk/instructions/vminps.rb +153 -163
  809. data/lib/fisk/instructions/vminsd.rb +63 -67
  810. data/lib/fisk/instructions/vminss.rb +63 -67
  811. data/lib/fisk/instructions/vmovapd.rb +257 -277
  812. data/lib/fisk/instructions/vmovaps.rb +257 -277
  813. data/lib/fisk/instructions/vmovd.rb +114 -122
  814. data/lib/fisk/instructions/vmovddup.rb +142 -152
  815. data/lib/fisk/instructions/vmovdqa.rb +104 -112
  816. data/lib/fisk/instructions/vmovdqa32.rb +155 -167
  817. data/lib/fisk/instructions/vmovdqa64.rb +155 -167
  818. data/lib/fisk/instructions/vmovdqu.rb +104 -112
  819. data/lib/fisk/instructions/vmovdqu16.rb +155 -167
  820. data/lib/fisk/instructions/vmovdqu32.rb +155 -167
  821. data/lib/fisk/instructions/vmovdqu64.rb +155 -167
  822. data/lib/fisk/instructions/vmovdqu8.rb +155 -167
  823. data/lib/fisk/instructions/vmovhlps.rb +32 -34
  824. data/lib/fisk/instructions/vmovhpd.rb +60 -64
  825. data/lib/fisk/instructions/vmovhps.rb +60 -64
  826. data/lib/fisk/instructions/vmovlhps.rb +32 -34
  827. data/lib/fisk/instructions/vmovlpd.rb +60 -64
  828. data/lib/fisk/instructions/vmovlps.rb +60 -64
  829. data/lib/fisk/instructions/vmovmskpd.rb +30 -32
  830. data/lib/fisk/instructions/vmovmskps.rb +30 -32
  831. data/lib/fisk/instructions/vmovntdq.rb +72 -77
  832. data/lib/fisk/instructions/vmovntdqa.rb +72 -77
  833. data/lib/fisk/instructions/vmovntpd.rb +72 -77
  834. data/lib/fisk/instructions/vmovntps.rb +72 -77
  835. data/lib/fisk/instructions/vmovq.rb +196 -212
  836. data/lib/fisk/instructions/vmovsd.rb +106 -114
  837. data/lib/fisk/instructions/vmovshdup.rb +142 -152
  838. data/lib/fisk/instructions/vmovsldup.rb +142 -152
  839. data/lib/fisk/instructions/vmovss.rb +106 -114
  840. data/lib/fisk/instructions/vmovupd.rb +257 -277
  841. data/lib/fisk/instructions/vmovups.rb +257 -277
  842. data/lib/fisk/instructions/vmpsadbw.rb +70 -74
  843. data/lib/fisk/instructions/vmulpd.rb +153 -163
  844. data/lib/fisk/instructions/vmulps.rb +153 -163
  845. data/lib/fisk/instructions/vmulsd.rb +63 -67
  846. data/lib/fisk/instructions/vmulss.rb +63 -67
  847. data/lib/fisk/instructions/vorpd.rb +152 -162
  848. data/lib/fisk/instructions/vorps.rb +152 -162
  849. data/lib/fisk/instructions/vpabsb.rb +142 -152
  850. data/lib/fisk/instructions/vpabsd.rb +142 -152
  851. data/lib/fisk/instructions/vpabsq.rb +86 -92
  852. data/lib/fisk/instructions/vpabsw.rb +142 -152
  853. data/lib/fisk/instructions/vpackssdw.rb +152 -162
  854. data/lib/fisk/instructions/vpacksswb.rb +152 -162
  855. data/lib/fisk/instructions/vpackusdw.rb +152 -162
  856. data/lib/fisk/instructions/vpackuswb.rb +152 -162
  857. data/lib/fisk/instructions/vpaddb.rb +152 -162
  858. data/lib/fisk/instructions/vpaddd.rb +152 -162
  859. data/lib/fisk/instructions/vpaddq.rb +152 -162
  860. data/lib/fisk/instructions/vpaddsb.rb +152 -162
  861. data/lib/fisk/instructions/vpaddsw.rb +152 -162
  862. data/lib/fisk/instructions/vpaddusb.rb +152 -162
  863. data/lib/fisk/instructions/vpaddusw.rb +152 -162
  864. data/lib/fisk/instructions/vpaddw.rb +152 -162
  865. data/lib/fisk/instructions/vpalignr.rb +172 -182
  866. data/lib/fisk/instructions/vpand.rb +62 -66
  867. data/lib/fisk/instructions/vpandd.rb +92 -98
  868. data/lib/fisk/instructions/vpandn.rb +62 -66
  869. data/lib/fisk/instructions/vpandnd.rb +92 -98
  870. data/lib/fisk/instructions/vpandnq.rb +92 -98
  871. data/lib/fisk/instructions/vpandq.rb +92 -98
  872. data/lib/fisk/instructions/vpavgb.rb +152 -162
  873. data/lib/fisk/instructions/vpavgw.rb +152 -162
  874. data/lib/fisk/instructions/vpblendd.rb +70 -74
  875. data/lib/fisk/instructions/vpblendmb.rb +92 -98
  876. data/lib/fisk/instructions/vpblendmd.rb +92 -98
  877. data/lib/fisk/instructions/vpblendmq.rb +92 -98
  878. data/lib/fisk/instructions/vpblendmw.rb +92 -98
  879. data/lib/fisk/instructions/vpblendvb.rb +70 -74
  880. data/lib/fisk/instructions/vpblendw.rb +70 -74
  881. data/lib/fisk/instructions/vpbroadcastb.rb +184 -197
  882. data/lib/fisk/instructions/vpbroadcastd.rb +184 -197
  883. data/lib/fisk/instructions/vpbroadcastmb2q.rb +44 -47
  884. data/lib/fisk/instructions/vpbroadcastmw2d.rb +44 -47
  885. data/lib/fisk/instructions/vpbroadcastq.rb +184 -197
  886. data/lib/fisk/instructions/vpbroadcastw.rb +184 -197
  887. data/lib/fisk/instructions/vpclmulqdq.rb +36 -38
  888. data/lib/fisk/instructions/vpcmov.rb +124 -132
  889. data/lib/fisk/instructions/vpcmpb.rb +104 -110
  890. data/lib/fisk/instructions/vpcmpd.rb +104 -110
  891. data/lib/fisk/instructions/vpcmpeqb.rb +152 -162
  892. data/lib/fisk/instructions/vpcmpeqd.rb +152 -162
  893. data/lib/fisk/instructions/vpcmpeqq.rb +152 -162
  894. data/lib/fisk/instructions/vpcmpeqw.rb +152 -162
  895. data/lib/fisk/instructions/vpcmpestri.rb +34 -36
  896. data/lib/fisk/instructions/vpcmpestrm.rb +34 -36
  897. data/lib/fisk/instructions/vpcmpgtb.rb +152 -162
  898. data/lib/fisk/instructions/vpcmpgtd.rb +152 -162
  899. data/lib/fisk/instructions/vpcmpgtq.rb +152 -162
  900. data/lib/fisk/instructions/vpcmpgtw.rb +152 -162
  901. data/lib/fisk/instructions/vpcmpistri.rb +34 -36
  902. data/lib/fisk/instructions/vpcmpistrm.rb +34 -36
  903. data/lib/fisk/instructions/vpcmpq.rb +104 -110
  904. data/lib/fisk/instructions/vpcmpub.rb +104 -110
  905. data/lib/fisk/instructions/vpcmpud.rb +104 -110
  906. data/lib/fisk/instructions/vpcmpuq.rb +104 -110
  907. data/lib/fisk/instructions/vpcmpuw.rb +104 -110
  908. data/lib/fisk/instructions/vpcmpw.rb +104 -110
  909. data/lib/fisk/instructions/vpcomb.rb +36 -38
  910. data/lib/fisk/instructions/vpcomd.rb +36 -38
  911. data/lib/fisk/instructions/vpcompressd.rb +86 -92
  912. data/lib/fisk/instructions/vpcompressq.rb +86 -92
  913. data/lib/fisk/instructions/vpcomq.rb +36 -38
  914. data/lib/fisk/instructions/vpcomub.rb +36 -38
  915. data/lib/fisk/instructions/vpcomud.rb +36 -38
  916. data/lib/fisk/instructions/vpcomuq.rb +36 -38
  917. data/lib/fisk/instructions/vpcomuw.rb +36 -38
  918. data/lib/fisk/instructions/vpcomw.rb +36 -38
  919. data/lib/fisk/instructions/vpconflictd.rb +86 -92
  920. data/lib/fisk/instructions/vpconflictq.rb +86 -92
  921. data/lib/fisk/instructions/vperm2f128.rb +36 -38
  922. data/lib/fisk/instructions/vperm2i128.rb +36 -38
  923. data/lib/fisk/instructions/vpermb.rb +92 -98
  924. data/lib/fisk/instructions/vpermd.rb +92 -98
  925. data/lib/fisk/instructions/vpermi2b.rb +92 -98
  926. data/lib/fisk/instructions/vpermi2d.rb +92 -98
  927. data/lib/fisk/instructions/vpermi2pd.rb +92 -98
  928. data/lib/fisk/instructions/vpermi2ps.rb +92 -98
  929. data/lib/fisk/instructions/vpermi2q.rb +92 -98
  930. data/lib/fisk/instructions/vpermi2w.rb +92 -98
  931. data/lib/fisk/instructions/vpermil2pd.rb +130 -138
  932. data/lib/fisk/instructions/vpermil2ps.rb +130 -138
  933. data/lib/fisk/instructions/vpermilpd.rb +312 -332
  934. data/lib/fisk/instructions/vpermilps.rb +312 -332
  935. data/lib/fisk/instructions/vpermpd.rb +158 -168
  936. data/lib/fisk/instructions/vpermps.rb +92 -98
  937. data/lib/fisk/instructions/vpermq.rb +158 -168
  938. data/lib/fisk/instructions/vpermt2b.rb +92 -98
  939. data/lib/fisk/instructions/vpermt2d.rb +92 -98
  940. data/lib/fisk/instructions/vpermt2pd.rb +92 -98
  941. data/lib/fisk/instructions/vpermt2ps.rb +92 -98
  942. data/lib/fisk/instructions/vpermt2q.rb +92 -98
  943. data/lib/fisk/instructions/vpermt2w.rb +92 -98
  944. data/lib/fisk/instructions/vpermw.rb +92 -98
  945. data/lib/fisk/instructions/vpexpandd.rb +86 -92
  946. data/lib/fisk/instructions/vpexpandq.rb +86 -92
  947. data/lib/fisk/instructions/vpextrb.rb +66 -70
  948. data/lib/fisk/instructions/vpextrd.rb +66 -70
  949. data/lib/fisk/instructions/vpextrq.rb +66 -70
  950. data/lib/fisk/instructions/vpextrw.rb +86 -92
  951. data/lib/fisk/instructions/vpgatherdd.rb +74 -79
  952. data/lib/fisk/instructions/vpgatherdq.rb +74 -79
  953. data/lib/fisk/instructions/vpgatherqd.rb +74 -79
  954. data/lib/fisk/instructions/vpgatherqq.rb +74 -79
  955. data/lib/fisk/instructions/vphaddbd.rb +30 -32
  956. data/lib/fisk/instructions/vphaddbq.rb +30 -32
  957. data/lib/fisk/instructions/vphaddbw.rb +30 -32
  958. data/lib/fisk/instructions/vphaddd.rb +62 -66
  959. data/lib/fisk/instructions/vphadddq.rb +30 -32
  960. data/lib/fisk/instructions/vphaddsw.rb +62 -66
  961. data/lib/fisk/instructions/vphaddubd.rb +30 -32
  962. data/lib/fisk/instructions/vphaddubq.rb +30 -32
  963. data/lib/fisk/instructions/vphaddubw.rb +30 -32
  964. data/lib/fisk/instructions/vphaddudq.rb +30 -32
  965. data/lib/fisk/instructions/vphadduwd.rb +30 -32
  966. data/lib/fisk/instructions/vphadduwq.rb +30 -32
  967. data/lib/fisk/instructions/vphaddw.rb +62 -66
  968. data/lib/fisk/instructions/vphaddwd.rb +30 -32
  969. data/lib/fisk/instructions/vphaddwq.rb +30 -32
  970. data/lib/fisk/instructions/vphminposuw.rb +30 -32
  971. data/lib/fisk/instructions/vphsubbw.rb +30 -32
  972. data/lib/fisk/instructions/vphsubd.rb +62 -66
  973. data/lib/fisk/instructions/vphsubdq.rb +30 -32
  974. data/lib/fisk/instructions/vphsubsw.rb +62 -66
  975. data/lib/fisk/instructions/vphsubw.rb +62 -66
  976. data/lib/fisk/instructions/vphsubwd.rb +30 -32
  977. data/lib/fisk/instructions/vpinsrb.rb +70 -74
  978. data/lib/fisk/instructions/vpinsrd.rb +70 -74
  979. data/lib/fisk/instructions/vpinsrq.rb +70 -74
  980. data/lib/fisk/instructions/vpinsrw.rb +70 -74
  981. data/lib/fisk/instructions/vplzcntd.rb +86 -92
  982. data/lib/fisk/instructions/vplzcntq.rb +86 -92
  983. data/lib/fisk/instructions/vpmacsdd.rb +36 -38
  984. data/lib/fisk/instructions/vpmacsdqh.rb +36 -38
  985. data/lib/fisk/instructions/vpmacsdql.rb +36 -38
  986. data/lib/fisk/instructions/vpmacssdd.rb +36 -38
  987. data/lib/fisk/instructions/vpmacssdqh.rb +36 -38
  988. data/lib/fisk/instructions/vpmacssdql.rb +36 -38
  989. data/lib/fisk/instructions/vpmacsswd.rb +36 -38
  990. data/lib/fisk/instructions/vpmacssww.rb +36 -38
  991. data/lib/fisk/instructions/vpmacswd.rb +36 -38
  992. data/lib/fisk/instructions/vpmacsww.rb +36 -38
  993. data/lib/fisk/instructions/vpmadcsswd.rb +36 -38
  994. data/lib/fisk/instructions/vpmadcswd.rb +36 -38
  995. data/lib/fisk/instructions/vpmadd52huq.rb +92 -98
  996. data/lib/fisk/instructions/vpmadd52luq.rb +92 -98
  997. data/lib/fisk/instructions/vpmaddubsw.rb +152 -162
  998. data/lib/fisk/instructions/vpmaddwd.rb +152 -162
  999. data/lib/fisk/instructions/vpmaskmovd.rb +62 -66
  1000. data/lib/fisk/instructions/vpmaskmovq.rb +62 -66
  1001. data/lib/fisk/instructions/vpmaxsb.rb +152 -162
  1002. data/lib/fisk/instructions/vpmaxsd.rb +152 -162
  1003. data/lib/fisk/instructions/vpmaxsq.rb +92 -98
  1004. data/lib/fisk/instructions/vpmaxsw.rb +152 -162
  1005. data/lib/fisk/instructions/vpmaxub.rb +152 -162
  1006. data/lib/fisk/instructions/vpmaxud.rb +152 -162
  1007. data/lib/fisk/instructions/vpmaxuq.rb +92 -98
  1008. data/lib/fisk/instructions/vpmaxuw.rb +152 -162
  1009. data/lib/fisk/instructions/vpminsb.rb +152 -162
  1010. data/lib/fisk/instructions/vpminsd.rb +152 -162
  1011. data/lib/fisk/instructions/vpminsq.rb +92 -98
  1012. data/lib/fisk/instructions/vpminsw.rb +152 -162
  1013. data/lib/fisk/instructions/vpminub.rb +152 -162
  1014. data/lib/fisk/instructions/vpminud.rb +152 -162
  1015. data/lib/fisk/instructions/vpminuq.rb +92 -98
  1016. data/lib/fisk/instructions/vpminuw.rb +152 -162
  1017. data/lib/fisk/instructions/vpmovb2m.rb +44 -47
  1018. data/lib/fisk/instructions/vpmovd2m.rb +44 -47
  1019. data/lib/fisk/instructions/vpmovdb.rb +86 -92
  1020. data/lib/fisk/instructions/vpmovdw.rb +86 -92
  1021. data/lib/fisk/instructions/vpmovm2b.rb +44 -47
  1022. data/lib/fisk/instructions/vpmovm2d.rb +44 -47
  1023. data/lib/fisk/instructions/vpmovm2q.rb +44 -47
  1024. data/lib/fisk/instructions/vpmovm2w.rb +44 -47
  1025. data/lib/fisk/instructions/vpmovmskb.rb +30 -32
  1026. data/lib/fisk/instructions/vpmovq2m.rb +44 -47
  1027. data/lib/fisk/instructions/vpmovqb.rb +86 -92
  1028. data/lib/fisk/instructions/vpmovqd.rb +86 -92
  1029. data/lib/fisk/instructions/vpmovqw.rb +86 -92
  1030. data/lib/fisk/instructions/vpmovsdb.rb +86 -92
  1031. data/lib/fisk/instructions/vpmovsdw.rb +86 -92
  1032. data/lib/fisk/instructions/vpmovsqb.rb +86 -92
  1033. data/lib/fisk/instructions/vpmovsqd.rb +86 -92
  1034. data/lib/fisk/instructions/vpmovsqw.rb +86 -92
  1035. data/lib/fisk/instructions/vpmovswb.rb +86 -92
  1036. data/lib/fisk/instructions/vpmovsxbd.rb +142 -152
  1037. data/lib/fisk/instructions/vpmovsxbq.rb +142 -152
  1038. data/lib/fisk/instructions/vpmovsxbw.rb +142 -152
  1039. data/lib/fisk/instructions/vpmovsxdq.rb +142 -152
  1040. data/lib/fisk/instructions/vpmovsxwd.rb +142 -152
  1041. data/lib/fisk/instructions/vpmovsxwq.rb +142 -152
  1042. data/lib/fisk/instructions/vpmovusdb.rb +86 -92
  1043. data/lib/fisk/instructions/vpmovusdw.rb +86 -92
  1044. data/lib/fisk/instructions/vpmovusqb.rb +86 -92
  1045. data/lib/fisk/instructions/vpmovusqd.rb +86 -92
  1046. data/lib/fisk/instructions/vpmovusqw.rb +86 -92
  1047. data/lib/fisk/instructions/vpmovuswb.rb +86 -92
  1048. data/lib/fisk/instructions/vpmovw2m.rb +44 -47
  1049. data/lib/fisk/instructions/vpmovwb.rb +86 -92
  1050. data/lib/fisk/instructions/vpmovzxbd.rb +142 -152
  1051. data/lib/fisk/instructions/vpmovzxbq.rb +142 -152
  1052. data/lib/fisk/instructions/vpmovzxbw.rb +142 -152
  1053. data/lib/fisk/instructions/vpmovzxdq.rb +142 -152
  1054. data/lib/fisk/instructions/vpmovzxwd.rb +142 -152
  1055. data/lib/fisk/instructions/vpmovzxwq.rb +142 -152
  1056. data/lib/fisk/instructions/vpmuldq.rb +152 -162
  1057. data/lib/fisk/instructions/vpmulhrsw.rb +152 -162
  1058. data/lib/fisk/instructions/vpmulhuw.rb +152 -162
  1059. data/lib/fisk/instructions/vpmulhw.rb +152 -162
  1060. data/lib/fisk/instructions/vpmulld.rb +152 -162
  1061. data/lib/fisk/instructions/vpmullq.rb +92 -98
  1062. data/lib/fisk/instructions/vpmullw.rb +152 -162
  1063. data/lib/fisk/instructions/vpmultishiftqb.rb +92 -98
  1064. data/lib/fisk/instructions/vpmuludq.rb +152 -162
  1065. data/lib/fisk/instructions/vpopcntd.rb +30 -32
  1066. data/lib/fisk/instructions/vpopcntq.rb +30 -32
  1067. data/lib/fisk/instructions/vpor.rb +62 -66
  1068. data/lib/fisk/instructions/vpord.rb +92 -98
  1069. data/lib/fisk/instructions/vporq.rb +92 -98
  1070. data/lib/fisk/instructions/vpperm.rb +63 -67
  1071. data/lib/fisk/instructions/vprold.rb +98 -104
  1072. data/lib/fisk/instructions/vprolq.rb +98 -104
  1073. data/lib/fisk/instructions/vprolvd.rb +92 -98
  1074. data/lib/fisk/instructions/vprolvq.rb +92 -98
  1075. data/lib/fisk/instructions/vprord.rb +98 -104
  1076. data/lib/fisk/instructions/vprorq.rb +98 -104
  1077. data/lib/fisk/instructions/vprorvd.rb +92 -98
  1078. data/lib/fisk/instructions/vprorvq.rb +92 -98
  1079. data/lib/fisk/instructions/vprotb.rb +88 -94
  1080. data/lib/fisk/instructions/vprotd.rb +88 -94
  1081. data/lib/fisk/instructions/vprotq.rb +88 -94
  1082. data/lib/fisk/instructions/vprotw.rb +88 -94
  1083. data/lib/fisk/instructions/vpsadbw.rb +152 -162
  1084. data/lib/fisk/instructions/vpscatterdd.rb +44 -47
  1085. data/lib/fisk/instructions/vpscatterdq.rb +44 -47
  1086. data/lib/fisk/instructions/vpscatterqd.rb +44 -47
  1087. data/lib/fisk/instructions/vpscatterqq.rb +44 -47
  1088. data/lib/fisk/instructions/vpshab.rb +56 -60
  1089. data/lib/fisk/instructions/vpshad.rb +56 -60
  1090. data/lib/fisk/instructions/vpshaq.rb +56 -60
  1091. data/lib/fisk/instructions/vpshaw.rb +56 -60
  1092. data/lib/fisk/instructions/vpshlb.rb +56 -60
  1093. data/lib/fisk/instructions/vpshld.rb +56 -60
  1094. data/lib/fisk/instructions/vpshlq.rb +56 -60
  1095. data/lib/fisk/instructions/vpshlw.rb +56 -60
  1096. data/lib/fisk/instructions/vpshufb.rb +152 -162
  1097. data/lib/fisk/instructions/vpshufd.rb +162 -172
  1098. data/lib/fisk/instructions/vpshufhw.rb +162 -172
  1099. data/lib/fisk/instructions/vpshuflw.rb +162 -172
  1100. data/lib/fisk/instructions/vpsignb.rb +62 -66
  1101. data/lib/fisk/instructions/vpsignd.rb +62 -66
  1102. data/lib/fisk/instructions/vpsignw.rb +62 -66
  1103. data/lib/fisk/instructions/vpslld.rb +280 -298
  1104. data/lib/fisk/instructions/vpslldq.rb +130 -138
  1105. data/lib/fisk/instructions/vpsllq.rb +280 -298
  1106. data/lib/fisk/instructions/vpsllvd.rb +152 -162
  1107. data/lib/fisk/instructions/vpsllvq.rb +152 -162
  1108. data/lib/fisk/instructions/vpsllvw.rb +92 -98
  1109. data/lib/fisk/instructions/vpsllw.rb +280 -298
  1110. data/lib/fisk/instructions/vpsrad.rb +280 -298
  1111. data/lib/fisk/instructions/vpsraq.rb +188 -200
  1112. data/lib/fisk/instructions/vpsravd.rb +152 -162
  1113. data/lib/fisk/instructions/vpsravq.rb +92 -98
  1114. data/lib/fisk/instructions/vpsravw.rb +92 -98
  1115. data/lib/fisk/instructions/vpsraw.rb +280 -298
  1116. data/lib/fisk/instructions/vpsrld.rb +280 -298
  1117. data/lib/fisk/instructions/vpsrldq.rb +130 -138
  1118. data/lib/fisk/instructions/vpsrlq.rb +280 -298
  1119. data/lib/fisk/instructions/vpsrlvd.rb +152 -162
  1120. data/lib/fisk/instructions/vpsrlvq.rb +152 -162
  1121. data/lib/fisk/instructions/vpsrlvw.rb +92 -98
  1122. data/lib/fisk/instructions/vpsrlw.rb +280 -298
  1123. data/lib/fisk/instructions/vpsubb.rb +152 -162
  1124. data/lib/fisk/instructions/vpsubd.rb +152 -162
  1125. data/lib/fisk/instructions/vpsubq.rb +152 -162
  1126. data/lib/fisk/instructions/vpsubsb.rb +152 -162
  1127. data/lib/fisk/instructions/vpsubsw.rb +152 -162
  1128. data/lib/fisk/instructions/vpsubusb.rb +152 -162
  1129. data/lib/fisk/instructions/vpsubusw.rb +152 -162
  1130. data/lib/fisk/instructions/vpsubw.rb +152 -162
  1131. data/lib/fisk/instructions/vpternlogd.rb +104 -110
  1132. data/lib/fisk/instructions/vpternlogq.rb +104 -110
  1133. data/lib/fisk/instructions/vptest.rb +58 -62
  1134. data/lib/fisk/instructions/vptestmb.rb +92 -98
  1135. data/lib/fisk/instructions/vptestmd.rb +92 -98
  1136. data/lib/fisk/instructions/vptestmq.rb +92 -98
  1137. data/lib/fisk/instructions/vptestmw.rb +92 -98
  1138. data/lib/fisk/instructions/vptestnmb.rb +92 -98
  1139. data/lib/fisk/instructions/vptestnmd.rb +92 -98
  1140. data/lib/fisk/instructions/vptestnmq.rb +92 -98
  1141. data/lib/fisk/instructions/vptestnmw.rb +92 -98
  1142. data/lib/fisk/instructions/vpunpckhbw.rb +152 -162
  1143. data/lib/fisk/instructions/vpunpckhdq.rb +152 -162
  1144. data/lib/fisk/instructions/vpunpckhqdq.rb +152 -162
  1145. data/lib/fisk/instructions/vpunpckhwd.rb +152 -162
  1146. data/lib/fisk/instructions/vpunpcklbw.rb +152 -162
  1147. data/lib/fisk/instructions/vpunpckldq.rb +152 -162
  1148. data/lib/fisk/instructions/vpunpcklqdq.rb +152 -162
  1149. data/lib/fisk/instructions/vpunpcklwd.rb +152 -162
  1150. data/lib/fisk/instructions/vpxor.rb +62 -66
  1151. data/lib/fisk/instructions/vpxord.rb +92 -98
  1152. data/lib/fisk/instructions/vpxorq.rb +92 -98
  1153. data/lib/fisk/instructions/vrangepd.rb +105 -111
  1154. data/lib/fisk/instructions/vrangeps.rb +105 -111
  1155. data/lib/fisk/instructions/vrangesd.rb +37 -39
  1156. data/lib/fisk/instructions/vrangess.rb +37 -39
  1157. data/lib/fisk/instructions/vrcp14pd.rb +86 -92
  1158. data/lib/fisk/instructions/vrcp14ps.rb +86 -92
  1159. data/lib/fisk/instructions/vrcp14sd.rb +32 -34
  1160. data/lib/fisk/instructions/vrcp14ss.rb +32 -34
  1161. data/lib/fisk/instructions/vrcp28pd.rb +31 -33
  1162. data/lib/fisk/instructions/vrcp28ps.rb +31 -33
  1163. data/lib/fisk/instructions/vrcp28sd.rb +33 -35
  1164. data/lib/fisk/instructions/vrcp28ss.rb +33 -35
  1165. data/lib/fisk/instructions/vrcpps.rb +58 -62
  1166. data/lib/fisk/instructions/vrcpss.rb +32 -34
  1167. data/lib/fisk/instructions/vreducepd.rb +98 -104
  1168. data/lib/fisk/instructions/vreduceps.rb +98 -104
  1169. data/lib/fisk/instructions/vreducesd.rb +36 -38
  1170. data/lib/fisk/instructions/vreducess.rb +36 -38
  1171. data/lib/fisk/instructions/vrndscalepd.rb +99 -105
  1172. data/lib/fisk/instructions/vrndscaleps.rb +99 -105
  1173. data/lib/fisk/instructions/vrndscalesd.rb +37 -39
  1174. data/lib/fisk/instructions/vrndscaless.rb +37 -39
  1175. data/lib/fisk/instructions/vroundpd.rb +66 -70
  1176. data/lib/fisk/instructions/vroundps.rb +66 -70
  1177. data/lib/fisk/instructions/vroundsd.rb +36 -38
  1178. data/lib/fisk/instructions/vroundss.rb +36 -38
  1179. data/lib/fisk/instructions/vrsqrt14pd.rb +86 -92
  1180. data/lib/fisk/instructions/vrsqrt14ps.rb +86 -92
  1181. data/lib/fisk/instructions/vrsqrt14sd.rb +32 -34
  1182. data/lib/fisk/instructions/vrsqrt14ss.rb +32 -34
  1183. data/lib/fisk/instructions/vrsqrt28pd.rb +31 -33
  1184. data/lib/fisk/instructions/vrsqrt28ps.rb +31 -33
  1185. data/lib/fisk/instructions/vrsqrt28sd.rb +33 -35
  1186. data/lib/fisk/instructions/vrsqrt28ss.rb +33 -35
  1187. data/lib/fisk/instructions/vrsqrtps.rb +58 -62
  1188. data/lib/fisk/instructions/vrsqrtss.rb +32 -34
  1189. data/lib/fisk/instructions/vscalefpd.rb +93 -99
  1190. data/lib/fisk/instructions/vscalefps.rb +93 -99
  1191. data/lib/fisk/instructions/vscalefsd.rb +33 -35
  1192. data/lib/fisk/instructions/vscalefss.rb +33 -35
  1193. data/lib/fisk/instructions/vscatterdpd.rb +44 -47
  1194. data/lib/fisk/instructions/vscatterdps.rb +44 -47
  1195. data/lib/fisk/instructions/vscatterpf0dpd.rb +15 -16
  1196. data/lib/fisk/instructions/vscatterpf0dps.rb +15 -16
  1197. data/lib/fisk/instructions/vscatterpf0qpd.rb +15 -16
  1198. data/lib/fisk/instructions/vscatterpf0qps.rb +15 -16
  1199. data/lib/fisk/instructions/vscatterpf1dpd.rb +15 -16
  1200. data/lib/fisk/instructions/vscatterpf1dps.rb +15 -16
  1201. data/lib/fisk/instructions/vscatterpf1qpd.rb +15 -16
  1202. data/lib/fisk/instructions/vscatterpf1qps.rb +15 -16
  1203. data/lib/fisk/instructions/vscatterqpd.rb +44 -47
  1204. data/lib/fisk/instructions/vscatterqps.rb +44 -47
  1205. data/lib/fisk/instructions/vshuff32x4.rb +70 -74
  1206. data/lib/fisk/instructions/vshuff64x2.rb +70 -74
  1207. data/lib/fisk/instructions/vshufi32x4.rb +70 -74
  1208. data/lib/fisk/instructions/vshufi64x2.rb +70 -74
  1209. data/lib/fisk/instructions/vshufpd.rb +172 -182
  1210. data/lib/fisk/instructions/vshufps.rb +172 -182
  1211. data/lib/fisk/instructions/vsqrtpd.rb +143 -153
  1212. data/lib/fisk/instructions/vsqrtps.rb +143 -153
  1213. data/lib/fisk/instructions/vsqrtsd.rb +63 -67
  1214. data/lib/fisk/instructions/vsqrtss.rb +63 -67
  1215. data/lib/fisk/instructions/vstmxcsr.rb +15 -16
  1216. data/lib/fisk/instructions/vsubpd.rb +153 -163
  1217. data/lib/fisk/instructions/vsubps.rb +153 -163
  1218. data/lib/fisk/instructions/vsubsd.rb +63 -67
  1219. data/lib/fisk/instructions/vsubss.rb +63 -67
  1220. data/lib/fisk/instructions/vtestpd.rb +58 -62
  1221. data/lib/fisk/instructions/vtestps.rb +58 -62
  1222. data/lib/fisk/instructions/vucomisd.rb +59 -63
  1223. data/lib/fisk/instructions/vucomiss.rb +59 -63
  1224. data/lib/fisk/instructions/vunpckhpd.rb +152 -162
  1225. data/lib/fisk/instructions/vunpckhps.rb +152 -162
  1226. data/lib/fisk/instructions/vunpcklpd.rb +152 -162
  1227. data/lib/fisk/instructions/vunpcklps.rb +152 -162
  1228. data/lib/fisk/instructions/vxorpd.rb +152 -162
  1229. data/lib/fisk/instructions/vxorps.rb +152 -162
  1230. data/lib/fisk/instructions/vzeroall.rb +12 -13
  1231. data/lib/fisk/instructions/vzeroupper.rb +12 -13
  1232. data/lib/fisk/instructions/xadd.rb +132 -140
  1233. data/lib/fisk/instructions/xchg.rb +306 -328
  1234. data/lib/fisk/instructions/xgetbv.rb +13 -14
  1235. data/lib/fisk/instructions/xlatb.rb +22 -24
  1236. data/lib/fisk/instructions/xor.rb +505 -539
  1237. data/lib/fisk/instructions/xorpd.rb +36 -38
  1238. data/lib/fisk/instructions/xorps.rb +34 -36
  1239. data/lib/fisk/version.rb +1 -1
  1240. data/test/test_cfg.rb +1 -2
  1241. data/test/test_fisk.rb +228 -0
  1242. data/test/test_fisk_written_size.rb +21 -0
  1243. data/test/test_register_allocation.rb +19 -0
  1244. data/test/test_run_fisk.rb +16 -0
  1245. metadata +63 -3
@@ -3,680 +3,648 @@
3
3
  class Fisk
4
4
  module Instructions
5
5
  # Instruction MOV
6
- forms = []
7
- operands = []
8
- encodings = []
6
+ MOV = Instruction.new("MOV", [
9
7
  # movb: r8, imm8
10
- operands << OPERAND_TYPES[47]
11
- operands << OPERAND_TYPES[1]
12
- encodings << Class.new(Fisk::Encoding) {
13
- def encode buffer, operands
14
- add_rex(buffer, operands,
8
+ Form.new([
9
+ OPERAND_TYPES[47],
10
+ OPERAND_TYPES[1],
11
+ ].freeze, [
12
+ Class.new(Fisk::Encoding) {
13
+ def encode buffer, operands
14
+ add_rex(buffer, operands,
15
15
  false,
16
16
  0,
17
17
  0,
18
18
  0,
19
- operands[0].rex_value)
20
- add_opcode buffer, 0xC6, 0
21
- add_modrm(buffer, operands,
19
+ operands[0].rex_value) +
20
+ add_opcode(buffer, 0xC6, 0) +
21
+ add_modrm(buffer,
22
22
  3,
23
23
  0,
24
- operands[0].op_value)
25
- add_immediate buffer, operands[1].op_value, 1
26
- end
27
-
28
- def bytesize; 3; end
29
- }.new
30
- encodings << Class.new(Fisk::Encoding) {
31
- def encode buffer, operands
32
- add_rex(buffer, operands,
24
+ operands[0].op_value, operands) +
25
+ add_immediate(buffer, operands[1].op_value, 1) +
26
+ 0
27
+ end
28
+ }.new.freeze,
29
+ Class.new(Fisk::Encoding) {
30
+ def encode buffer, operands
31
+ add_rex(buffer, operands,
33
32
  false,
34
33
  0,
35
34
  0,
36
35
  0,
37
- operands[0].rex_value)
38
- add_opcode buffer, 0xB0, operands[0].op_value
39
- add_immediate buffer, operands[1].op_value, 1
40
- end
41
-
42
- def bytesize; 2; end
43
- }.new
44
- forms << Form.new(operands, encodings)
45
- operands = []
46
- encodings = []
36
+ operands[0].rex_value) +
37
+ add_opcode(buffer, 0xB0, operands[0].op_value) +
38
+ add_immediate(buffer, operands[1].op_value, 1) +
39
+ 0
40
+ end
41
+ }.new.freeze,
42
+ ].freeze).freeze,
47
43
  # movb: r8, r8
48
- operands << OPERAND_TYPES[47]
49
- operands << OPERAND_TYPES[3]
50
- encodings << Class.new(Fisk::Encoding) {
51
- def encode buffer, operands
52
- add_rex(buffer, operands,
44
+ Form.new([
45
+ OPERAND_TYPES[47],
46
+ OPERAND_TYPES[3],
47
+ ].freeze, [
48
+ Class.new(Fisk::Encoding) {
49
+ def encode buffer, operands
50
+ add_rex(buffer, operands,
53
51
  false,
54
52
  0,
55
53
  operands[1].rex_value,
56
54
  0,
57
- operands[0].rex_value)
58
- add_opcode buffer, 0x88, 0
59
- add_modrm(buffer, operands,
55
+ operands[0].rex_value) +
56
+ add_opcode(buffer, 0x88, 0) +
57
+ add_modrm_reg_reg(buffer,
60
58
  3,
61
59
  operands[1].op_value,
62
- operands[0].op_value)
63
- end
64
-
65
- def bytesize; 2; end
66
- }.new
67
- encodings << Class.new(Fisk::Encoding) {
68
- def encode buffer, operands
69
- add_rex(buffer, operands,
60
+ operands[0].op_value, operands) +
61
+ 0
62
+ end
63
+ }.new.freeze,
64
+ Class.new(Fisk::Encoding) {
65
+ def encode buffer, operands
66
+ add_rex(buffer, operands,
70
67
  false,
71
68
  0,
72
69
  operands[0].rex_value,
73
70
  0,
74
- operands[1].rex_value)
75
- add_opcode buffer, 0x8A, 0
76
- add_modrm(buffer, operands,
71
+ operands[1].rex_value) +
72
+ add_opcode(buffer, 0x8A, 0) +
73
+ add_modrm_reg_reg(buffer,
77
74
  3,
78
75
  operands[0].op_value,
79
- operands[1].op_value)
80
- end
81
-
82
- def bytesize; 2; end
83
- }.new
84
- forms << Form.new(operands, encodings)
85
- operands = []
86
- encodings = []
76
+ operands[1].op_value, operands) +
77
+ 0
78
+ end
79
+ }.new.freeze,
80
+ ].freeze).freeze,
87
81
  # movb: r8, m8
88
- operands << OPERAND_TYPES[47]
89
- operands << OPERAND_TYPES[4]
90
- encodings << Class.new(Fisk::Encoding) {
91
- def encode buffer, operands
92
- add_rex(buffer, operands,
82
+ Form.new([
83
+ OPERAND_TYPES[47],
84
+ OPERAND_TYPES[4],
85
+ ].freeze, [
86
+ Class.new(Fisk::Encoding) {
87
+ def encode buffer, operands
88
+ add_rex(buffer, operands,
93
89
  false,
94
90
  0,
95
91
  operands[0].rex_value,
96
92
  operands[1].rex_value,
97
- operands[1].rex_value)
98
- add_opcode buffer, 0x8A, 0
99
- add_modrm(buffer, operands,
93
+ operands[1].rex_value) +
94
+ add_opcode(buffer, 0x8A, 0) +
95
+ add_modrm_reg_mem(buffer,
100
96
  0,
101
97
  operands[0].op_value,
102
- operands[1].op_value)
103
- end
104
-
105
- def bytesize; 2; end
106
- }.new
107
- forms << Form.new(operands, encodings)
108
- operands = []
109
- encodings = []
98
+ operands[1].op_value, operands) +
99
+ 0
100
+ end
101
+ }.new.freeze,
102
+ ].freeze).freeze,
110
103
  # movw: r16, imm16
111
- operands << OPERAND_TYPES[38]
112
- operands << OPERAND_TYPES[6]
113
- encodings << Class.new(Fisk::Encoding) {
114
- def encode buffer, operands
115
- add_prefix buffer, operands, 0x66, false
116
- add_rex(buffer, operands,
104
+ Form.new([
105
+ OPERAND_TYPES[38],
106
+ OPERAND_TYPES[6],
107
+ ].freeze, [
108
+ Class.new(Fisk::Encoding) {
109
+ def encode buffer, operands
110
+ add_prefix(buffer, operands, 0x66, false) +
111
+ add_rex(buffer, operands,
117
112
  false,
118
113
  0,
119
114
  0,
120
115
  0,
121
- operands[0].rex_value)
122
- add_opcode buffer, 0xC7, 0
123
- add_modrm(buffer, operands,
116
+ operands[0].rex_value) +
117
+ add_opcode(buffer, 0xC7, 0) +
118
+ add_modrm(buffer,
124
119
  3,
125
120
  0,
126
- operands[0].op_value)
127
- add_immediate buffer, operands[1].op_value, 2
128
- end
129
-
130
- def bytesize; 4; end
131
- }.new
132
- encodings << Class.new(Fisk::Encoding) {
133
- def encode buffer, operands
134
- add_prefix buffer, operands, 0x66, false
135
- add_rex(buffer, operands,
121
+ operands[0].op_value, operands) +
122
+ add_immediate(buffer, operands[1].op_value, 2) +
123
+ 0
124
+ end
125
+ }.new.freeze,
126
+ Class.new(Fisk::Encoding) {
127
+ def encode buffer, operands
128
+ add_prefix(buffer, operands, 0x66, false) +
129
+ add_rex(buffer, operands,
136
130
  false,
137
131
  0,
138
132
  0,
139
133
  0,
140
- operands[0].rex_value)
141
- add_opcode buffer, 0xB8, operands[0].op_value
142
- add_immediate buffer, operands[1].op_value, 2
143
- end
144
-
145
- def bytesize; 3; end
146
- }.new
147
- forms << Form.new(operands, encodings)
148
- operands = []
149
- encodings = []
134
+ operands[0].rex_value) +
135
+ add_opcode(buffer, 0xB8, operands[0].op_value) +
136
+ add_immediate(buffer, operands[1].op_value, 2) +
137
+ 0
138
+ end
139
+ }.new.freeze,
140
+ ].freeze).freeze,
150
141
  # movw: r16, r16
151
- operands << OPERAND_TYPES[38]
152
- operands << OPERAND_TYPES[8]
153
- encodings << Class.new(Fisk::Encoding) {
154
- def encode buffer, operands
155
- add_prefix buffer, operands, 0x66, false
156
- add_rex(buffer, operands,
142
+ Form.new([
143
+ OPERAND_TYPES[38],
144
+ OPERAND_TYPES[8],
145
+ ].freeze, [
146
+ Class.new(Fisk::Encoding) {
147
+ def encode buffer, operands
148
+ add_prefix(buffer, operands, 0x66, false) +
149
+ add_rex(buffer, operands,
157
150
  false,
158
151
  0,
159
152
  operands[1].rex_value,
160
153
  0,
161
- operands[0].rex_value)
162
- add_opcode buffer, 0x89, 0
163
- add_modrm(buffer, operands,
154
+ operands[0].rex_value) +
155
+ add_opcode(buffer, 0x89, 0) +
156
+ add_modrm_reg_reg(buffer,
164
157
  3,
165
158
  operands[1].op_value,
166
- operands[0].op_value)
167
- end
168
-
169
- def bytesize; 2; end
170
- }.new
171
- encodings << Class.new(Fisk::Encoding) {
172
- def encode buffer, operands
173
- add_prefix buffer, operands, 0x66, false
174
- add_rex(buffer, operands,
159
+ operands[0].op_value, operands) +
160
+ 0
161
+ end
162
+ }.new.freeze,
163
+ Class.new(Fisk::Encoding) {
164
+ def encode buffer, operands
165
+ add_prefix(buffer, operands, 0x66, false) +
166
+ add_rex(buffer, operands,
175
167
  false,
176
168
  0,
177
169
  operands[0].rex_value,
178
170
  0,
179
- operands[1].rex_value)
180
- add_opcode buffer, 0x8B, 0
181
- add_modrm(buffer, operands,
171
+ operands[1].rex_value) +
172
+ add_opcode(buffer, 0x8B, 0) +
173
+ add_modrm_reg_reg(buffer,
182
174
  3,
183
175
  operands[0].op_value,
184
- operands[1].op_value)
185
- end
186
-
187
- def bytesize; 2; end
188
- }.new
189
- forms << Form.new(operands, encodings)
190
- operands = []
191
- encodings = []
176
+ operands[1].op_value, operands) +
177
+ 0
178
+ end
179
+ }.new.freeze,
180
+ ].freeze).freeze,
192
181
  # movw: r16, m16
193
- operands << OPERAND_TYPES[38]
194
- operands << OPERAND_TYPES[9]
195
- encodings << Class.new(Fisk::Encoding) {
196
- def encode buffer, operands
197
- add_prefix buffer, operands, 0x66, false
198
- add_rex(buffer, operands,
182
+ Form.new([
183
+ OPERAND_TYPES[38],
184
+ OPERAND_TYPES[9],
185
+ ].freeze, [
186
+ Class.new(Fisk::Encoding) {
187
+ def encode buffer, operands
188
+ add_prefix(buffer, operands, 0x66, false) +
189
+ add_rex(buffer, operands,
199
190
  false,
200
191
  0,
201
192
  operands[0].rex_value,
202
193
  operands[1].rex_value,
203
- operands[1].rex_value)
204
- add_opcode buffer, 0x8B, 0
205
- add_modrm(buffer, operands,
194
+ operands[1].rex_value) +
195
+ add_opcode(buffer, 0x8B, 0) +
196
+ add_modrm_reg_mem(buffer,
206
197
  0,
207
198
  operands[0].op_value,
208
- operands[1].op_value)
209
- end
210
-
211
- def bytesize; 2; end
212
- }.new
213
- forms << Form.new(operands, encodings)
214
- operands = []
215
- encodings = []
199
+ operands[1].op_value, operands) +
200
+ 0
201
+ end
202
+ }.new.freeze,
203
+ ].freeze).freeze,
216
204
  # movabs: eax, moffs32
217
- operands << OPERAND_TYPES[48]
218
- operands << OPERAND_TYPES[49]
219
- encodings << Class.new(Fisk::Encoding) {
220
- def encode buffer, operands
221
- add_opcode buffer, 0xA1, 0
222
- add_data_offset buffer, operands[1].op_value, 4
223
- end
224
-
225
- def bytesize; 1; end
226
- }.new
227
- forms << Form.new(operands, encodings)
228
- operands = []
229
- encodings = []
205
+ Form.new([
206
+ OPERAND_TYPES[48],
207
+ OPERAND_TYPES[49],
208
+ ].freeze, [
209
+ Class.new(Fisk::Encoding) {
210
+ def encode buffer, operands
211
+ add_opcode(buffer, 0xA1, 0) +
212
+ add_data_offset(buffer, operands[1].op_value, 4) +
213
+ 0
214
+ end
215
+ }.new.freeze,
216
+ ].freeze).freeze,
230
217
  # movl: r32, imm32
231
- operands << OPERAND_TYPES[27]
232
- operands << OPERAND_TYPES[11]
233
- encodings << Class.new(Fisk::Encoding) {
234
- def encode buffer, operands
235
- add_rex(buffer, operands,
218
+ Form.new([
219
+ OPERAND_TYPES[27],
220
+ OPERAND_TYPES[11],
221
+ ].freeze, [
222
+ Class.new(Fisk::Encoding) {
223
+ def encode buffer, operands
224
+ add_rex(buffer, operands,
236
225
  false,
237
226
  0,
238
227
  0,
239
228
  0,
240
- operands[0].rex_value)
241
- add_opcode buffer, 0xC7, 0
242
- add_modrm(buffer, operands,
229
+ operands[0].rex_value) +
230
+ add_opcode(buffer, 0xC7, 0) +
231
+ add_modrm(buffer,
243
232
  3,
244
233
  0,
245
- operands[0].op_value)
246
- add_immediate buffer, operands[1].op_value, 4
247
- end
248
-
249
- def bytesize; 6; end
250
- }.new
251
- encodings << Class.new(Fisk::Encoding) {
252
- def encode buffer, operands
253
- add_rex(buffer, operands,
234
+ operands[0].op_value, operands) +
235
+ add_immediate(buffer, operands[1].op_value, 4) +
236
+ 0
237
+ end
238
+ }.new.freeze,
239
+ Class.new(Fisk::Encoding) {
240
+ def encode buffer, operands
241
+ add_rex(buffer, operands,
254
242
  false,
255
243
  0,
256
244
  0,
257
245
  0,
258
- operands[0].rex_value)
259
- add_opcode buffer, 0xB8, operands[0].op_value
260
- add_immediate buffer, operands[1].op_value, 4
261
- end
262
-
263
- def bytesize; 5; end
264
- }.new
265
- forms << Form.new(operands, encodings)
266
- operands = []
267
- encodings = []
246
+ operands[0].rex_value) +
247
+ add_opcode(buffer, 0xB8, operands[0].op_value) +
248
+ add_immediate(buffer, operands[1].op_value, 4) +
249
+ 0
250
+ end
251
+ }.new.freeze,
252
+ ].freeze).freeze,
268
253
  # movl: r32, r32
269
- operands << OPERAND_TYPES[27]
270
- operands << OPERAND_TYPES[13]
271
- encodings << Class.new(Fisk::Encoding) {
272
- def encode buffer, operands
273
- add_rex(buffer, operands,
254
+ Form.new([
255
+ OPERAND_TYPES[27],
256
+ OPERAND_TYPES[13],
257
+ ].freeze, [
258
+ Class.new(Fisk::Encoding) {
259
+ def encode buffer, operands
260
+ add_rex(buffer, operands,
274
261
  false,
275
262
  0,
276
263
  operands[1].rex_value,
277
264
  0,
278
- operands[0].rex_value)
279
- add_opcode buffer, 0x89, 0
280
- add_modrm(buffer, operands,
265
+ operands[0].rex_value) +
266
+ add_opcode(buffer, 0x89, 0) +
267
+ add_modrm_reg_reg(buffer,
281
268
  3,
282
269
  operands[1].op_value,
283
- operands[0].op_value)
284
- end
285
-
286
- def bytesize; 2; end
287
- }.new
288
- encodings << Class.new(Fisk::Encoding) {
289
- def encode buffer, operands
290
- add_rex(buffer, operands,
270
+ operands[0].op_value, operands) +
271
+ 0
272
+ end
273
+ }.new.freeze,
274
+ Class.new(Fisk::Encoding) {
275
+ def encode buffer, operands
276
+ add_rex(buffer, operands,
291
277
  false,
292
278
  0,
293
279
  operands[0].rex_value,
294
280
  0,
295
- operands[1].rex_value)
296
- add_opcode buffer, 0x8B, 0
297
- add_modrm(buffer, operands,
281
+ operands[1].rex_value) +
282
+ add_opcode(buffer, 0x8B, 0) +
283
+ add_modrm_reg_reg(buffer,
298
284
  3,
299
285
  operands[0].op_value,
300
- operands[1].op_value)
301
- end
302
-
303
- def bytesize; 2; end
304
- }.new
305
- forms << Form.new(operands, encodings)
306
- operands = []
307
- encodings = []
286
+ operands[1].op_value, operands) +
287
+ 0
288
+ end
289
+ }.new.freeze,
290
+ ].freeze).freeze,
308
291
  # movl: r32, m32
309
- operands << OPERAND_TYPES[27]
310
- operands << OPERAND_TYPES[14]
311
- encodings << Class.new(Fisk::Encoding) {
312
- def encode buffer, operands
313
- add_rex(buffer, operands,
292
+ Form.new([
293
+ OPERAND_TYPES[27],
294
+ OPERAND_TYPES[14],
295
+ ].freeze, [
296
+ Class.new(Fisk::Encoding) {
297
+ def encode buffer, operands
298
+ add_rex(buffer, operands,
314
299
  false,
315
300
  0,
316
301
  operands[0].rex_value,
317
302
  operands[1].rex_value,
318
- operands[1].rex_value)
319
- add_opcode buffer, 0x8B, 0
320
- add_modrm(buffer, operands,
303
+ operands[1].rex_value) +
304
+ add_opcode(buffer, 0x8B, 0) +
305
+ add_modrm_reg_mem(buffer,
321
306
  0,
322
307
  operands[0].op_value,
323
- operands[1].op_value)
324
- end
325
-
326
- def bytesize; 2; end
327
- }.new
328
- forms << Form.new(operands, encodings)
329
- operands = []
330
- encodings = []
308
+ operands[1].op_value, operands) +
309
+ 0
310
+ end
311
+ }.new.freeze,
312
+ ].freeze).freeze,
331
313
  # movabs: rax, moffs64
332
- operands << OPERAND_TYPES[50]
333
- operands << OPERAND_TYPES[51]
334
- encodings << Class.new(Fisk::Encoding) {
335
- def encode buffer, operands
336
- add_rex(buffer, operands,
314
+ Form.new([
315
+ OPERAND_TYPES[50],
316
+ OPERAND_TYPES[51],
317
+ ].freeze, [
318
+ Class.new(Fisk::Encoding) {
319
+ def encode buffer, operands
320
+ add_rex(buffer, operands,
337
321
  true,
338
322
  1,
339
323
  0,
340
324
  0,
341
- 0)
342
- add_opcode buffer, 0xA1, 0
343
- add_data_offset buffer, operands[1].op_value, 8
344
- end
345
-
346
- def bytesize; 2; end
347
- }.new
348
- forms << Form.new(operands, encodings)
349
- operands = []
350
- encodings = []
325
+ 0) +
326
+ add_opcode(buffer, 0xA1, 0) +
327
+ add_data_offset(buffer, operands[1].op_value, 8) +
328
+ 0
329
+ end
330
+ }.new.freeze,
331
+ ].freeze).freeze,
351
332
  # movq: r64, imm32
352
- operands << OPERAND_TYPES[28]
353
- operands << OPERAND_TYPES[11]
354
- encodings << Class.new(Fisk::Encoding) {
355
- def encode buffer, operands
356
- add_rex(buffer, operands,
333
+ Form.new([
334
+ OPERAND_TYPES[28],
335
+ OPERAND_TYPES[11],
336
+ ].freeze, [
337
+ Class.new(Fisk::Encoding) {
338
+ def encode buffer, operands
339
+ add_rex(buffer, operands,
357
340
  true,
358
341
  1,
359
342
  0,
360
343
  0,
361
- operands[0].rex_value)
362
- add_opcode buffer, 0xC7, 0
363
- add_modrm(buffer, operands,
344
+ operands[0].rex_value) +
345
+ add_opcode(buffer, 0xC7, 0) +
346
+ add_modrm(buffer,
364
347
  3,
365
348
  0,
366
- operands[0].op_value)
367
- add_immediate buffer, operands[1].op_value, 4
368
- end
369
-
370
- def bytesize; 7; end
371
- }.new
372
- forms << Form.new(operands, encodings)
373
- operands = []
374
- encodings = []
349
+ operands[0].op_value, operands) +
350
+ add_immediate(buffer, operands[1].op_value, 4) +
351
+ 0
352
+ end
353
+ }.new.freeze,
354
+ ].freeze).freeze,
375
355
  # movq: r64, imm64
376
- operands << OPERAND_TYPES[28]
377
- operands << OPERAND_TYPES[52]
378
- encodings << Class.new(Fisk::Encoding) {
379
- def encode buffer, operands
380
- add_rex(buffer, operands,
356
+ Form.new([
357
+ OPERAND_TYPES[28],
358
+ OPERAND_TYPES[52],
359
+ ].freeze, [
360
+ Class.new(Fisk::Encoding) {
361
+ def encode buffer, operands
362
+ add_rex(buffer, operands,
381
363
  true,
382
364
  1,
383
365
  0,
384
366
  0,
385
- operands[0].rex_value)
386
- add_opcode buffer, 0xB8, operands[0].op_value
387
- add_immediate buffer, operands[1].op_value, 8
388
- end
389
-
390
- def bytesize; 10; end
391
- }.new
392
- forms << Form.new(operands, encodings)
393
- operands = []
394
- encodings = []
367
+ operands[0].rex_value) +
368
+ add_opcode(buffer, 0xB8, operands[0].op_value) +
369
+ add_immediate(buffer, operands[1].op_value, 8) +
370
+ 0
371
+ end
372
+ }.new.freeze,
373
+ ].freeze).freeze,
395
374
  # movq: r64, r64
396
- operands << OPERAND_TYPES[28]
397
- operands << OPERAND_TYPES[17]
398
- encodings << Class.new(Fisk::Encoding) {
399
- def encode buffer, operands
400
- add_rex(buffer, operands,
375
+ Form.new([
376
+ OPERAND_TYPES[28],
377
+ OPERAND_TYPES[17],
378
+ ].freeze, [
379
+ Class.new(Fisk::Encoding) {
380
+ def encode buffer, operands
381
+ add_rex(buffer, operands,
401
382
  true,
402
383
  1,
403
384
  operands[1].rex_value,
404
385
  0,
405
- operands[0].rex_value)
406
- add_opcode buffer, 0x89, 0
407
- add_modrm(buffer, operands,
386
+ operands[0].rex_value) +
387
+ add_opcode(buffer, 0x89, 0) +
388
+ add_modrm_reg_reg(buffer,
408
389
  3,
409
390
  operands[1].op_value,
410
- operands[0].op_value)
411
- end
412
-
413
- def bytesize; 3; end
414
- }.new
415
- encodings << Class.new(Fisk::Encoding) {
416
- def encode buffer, operands
417
- add_rex(buffer, operands,
391
+ operands[0].op_value, operands) +
392
+ 0
393
+ end
394
+ }.new.freeze,
395
+ Class.new(Fisk::Encoding) {
396
+ def encode buffer, operands
397
+ add_rex(buffer, operands,
418
398
  true,
419
399
  1,
420
400
  operands[0].rex_value,
421
401
  0,
422
- operands[1].rex_value)
423
- add_opcode buffer, 0x8B, 0
424
- add_modrm(buffer, operands,
402
+ operands[1].rex_value) +
403
+ add_opcode(buffer, 0x8B, 0) +
404
+ add_modrm_reg_reg(buffer,
425
405
  3,
426
406
  operands[0].op_value,
427
- operands[1].op_value)
428
- end
429
-
430
- def bytesize; 3; end
431
- }.new
432
- forms << Form.new(operands, encodings)
433
- operands = []
434
- encodings = []
407
+ operands[1].op_value, operands) +
408
+ 0
409
+ end
410
+ }.new.freeze,
411
+ ].freeze).freeze,
435
412
  # movq: r64, m64
436
- operands << OPERAND_TYPES[28]
437
- operands << OPERAND_TYPES[18]
438
- encodings << Class.new(Fisk::Encoding) {
439
- def encode buffer, operands
440
- add_rex(buffer, operands,
413
+ Form.new([
414
+ OPERAND_TYPES[28],
415
+ OPERAND_TYPES[18],
416
+ ].freeze, [
417
+ Class.new(Fisk::Encoding) {
418
+ def encode buffer, operands
419
+ add_rex(buffer, operands,
441
420
  true,
442
421
  1,
443
422
  operands[0].rex_value,
444
423
  operands[1].rex_value,
445
- operands[1].rex_value)
446
- add_opcode buffer, 0x8B, 0
447
- add_modrm(buffer, operands,
424
+ operands[1].rex_value) +
425
+ add_opcode(buffer, 0x8B, 0) +
426
+ add_modrm_reg_mem(buffer,
448
427
  0,
449
428
  operands[0].op_value,
450
- operands[1].op_value)
451
- end
452
-
453
- def bytesize; 3; end
454
- }.new
455
- forms << Form.new(operands, encodings)
456
- operands = []
457
- encodings = []
429
+ operands[1].op_value, operands) +
430
+ 0
431
+ end
432
+ }.new.freeze,
433
+ ].freeze).freeze,
458
434
  # movb: m8, imm8
459
- operands << OPERAND_TYPES[43]
460
- operands << OPERAND_TYPES[1]
461
- encodings << Class.new(Fisk::Encoding) {
462
- def encode buffer, operands
463
- add_rex(buffer, operands,
435
+ Form.new([
436
+ OPERAND_TYPES[43],
437
+ OPERAND_TYPES[1],
438
+ ].freeze, [
439
+ Class.new(Fisk::Encoding) {
440
+ def encode buffer, operands
441
+ add_rex(buffer, operands,
464
442
  false,
465
443
  0,
466
444
  0,
467
445
  operands[0].rex_value,
468
- operands[0].rex_value)
469
- add_opcode buffer, 0xC6, 0
470
- add_modrm(buffer, operands,
446
+ operands[0].rex_value) +
447
+ add_opcode(buffer, 0xC6, 0) +
448
+ add_modrm(buffer,
471
449
  0,
472
450
  0,
473
- operands[0].op_value)
474
- add_immediate buffer, operands[1].op_value, 1
475
- end
476
-
477
- def bytesize; 3; end
478
- }.new
479
- forms << Form.new(operands, encodings)
480
- operands = []
481
- encodings = []
451
+ operands[0].op_value, operands) +
452
+ add_immediate(buffer, operands[1].op_value, 1) +
453
+ 0
454
+ end
455
+ }.new.freeze,
456
+ ].freeze).freeze,
482
457
  # movb: m8, r8
483
- operands << OPERAND_TYPES[43]
484
- operands << OPERAND_TYPES[3]
485
- encodings << Class.new(Fisk::Encoding) {
486
- def encode buffer, operands
487
- add_rex(buffer, operands,
458
+ Form.new([
459
+ OPERAND_TYPES[43],
460
+ OPERAND_TYPES[3],
461
+ ].freeze, [
462
+ Class.new(Fisk::Encoding) {
463
+ def encode buffer, operands
464
+ add_rex(buffer, operands,
488
465
  false,
489
466
  0,
490
467
  operands[1].rex_value,
491
468
  operands[0].rex_value,
492
- operands[0].rex_value)
493
- add_opcode buffer, 0x88, 0
494
- add_modrm(buffer, operands,
469
+ operands[0].rex_value) +
470
+ add_opcode(buffer, 0x88, 0) +
471
+ add_modrm_mem_reg(buffer,
495
472
  0,
496
473
  operands[1].op_value,
497
- operands[0].op_value)
498
- end
499
-
500
- def bytesize; 2; end
501
- }.new
502
- forms << Form.new(operands, encodings)
503
- operands = []
504
- encodings = []
474
+ operands[0].op_value, operands) +
475
+ 0
476
+ end
477
+ }.new.freeze,
478
+ ].freeze).freeze,
505
479
  # movw: m16, imm16
506
- operands << OPERAND_TYPES[45]
507
- operands << OPERAND_TYPES[6]
508
- encodings << Class.new(Fisk::Encoding) {
509
- def encode buffer, operands
510
- add_prefix buffer, operands, 0x66, false
511
- add_rex(buffer, operands,
480
+ Form.new([
481
+ OPERAND_TYPES[45],
482
+ OPERAND_TYPES[6],
483
+ ].freeze, [
484
+ Class.new(Fisk::Encoding) {
485
+ def encode buffer, operands
486
+ add_prefix(buffer, operands, 0x66, false) +
487
+ add_rex(buffer, operands,
512
488
  false,
513
489
  0,
514
490
  0,
515
491
  operands[0].rex_value,
516
- operands[0].rex_value)
517
- add_opcode buffer, 0xC7, 0
518
- add_modrm(buffer, operands,
492
+ operands[0].rex_value) +
493
+ add_opcode(buffer, 0xC7, 0) +
494
+ add_modrm(buffer,
519
495
  0,
520
496
  0,
521
- operands[0].op_value)
522
- add_immediate buffer, operands[1].op_value, 2
523
- end
524
-
525
- def bytesize; 4; end
526
- }.new
527
- forms << Form.new(operands, encodings)
528
- operands = []
529
- encodings = []
497
+ operands[0].op_value, operands) +
498
+ add_immediate(buffer, operands[1].op_value, 2) +
499
+ 0
500
+ end
501
+ }.new.freeze,
502
+ ].freeze).freeze,
530
503
  # movw: m16, r16
531
- operands << OPERAND_TYPES[45]
532
- operands << OPERAND_TYPES[8]
533
- encodings << Class.new(Fisk::Encoding) {
534
- def encode buffer, operands
535
- add_prefix buffer, operands, 0x66, false
536
- add_rex(buffer, operands,
504
+ Form.new([
505
+ OPERAND_TYPES[45],
506
+ OPERAND_TYPES[8],
507
+ ].freeze, [
508
+ Class.new(Fisk::Encoding) {
509
+ def encode buffer, operands
510
+ add_prefix(buffer, operands, 0x66, false) +
511
+ add_rex(buffer, operands,
537
512
  false,
538
513
  0,
539
514
  operands[1].rex_value,
540
515
  operands[0].rex_value,
541
- operands[0].rex_value)
542
- add_opcode buffer, 0x89, 0
543
- add_modrm(buffer, operands,
516
+ operands[0].rex_value) +
517
+ add_opcode(buffer, 0x89, 0) +
518
+ add_modrm_mem_reg(buffer,
544
519
  0,
545
520
  operands[1].op_value,
546
- operands[0].op_value)
547
- end
548
-
549
- def bytesize; 2; end
550
- }.new
551
- forms << Form.new(operands, encodings)
552
- operands = []
553
- encodings = []
521
+ operands[0].op_value, operands) +
522
+ 0
523
+ end
524
+ }.new.freeze,
525
+ ].freeze).freeze,
554
526
  # movl: m32, imm32
555
- operands << OPERAND_TYPES[37]
556
- operands << OPERAND_TYPES[11]
557
- encodings << Class.new(Fisk::Encoding) {
558
- def encode buffer, operands
559
- add_rex(buffer, operands,
527
+ Form.new([
528
+ OPERAND_TYPES[37],
529
+ OPERAND_TYPES[11],
530
+ ].freeze, [
531
+ Class.new(Fisk::Encoding) {
532
+ def encode buffer, operands
533
+ add_rex(buffer, operands,
560
534
  false,
561
535
  0,
562
536
  0,
563
537
  operands[0].rex_value,
564
- operands[0].rex_value)
565
- add_opcode buffer, 0xC7, 0
566
- add_modrm(buffer, operands,
538
+ operands[0].rex_value) +
539
+ add_opcode(buffer, 0xC7, 0) +
540
+ add_modrm(buffer,
567
541
  0,
568
542
  0,
569
- operands[0].op_value)
570
- add_immediate buffer, operands[1].op_value, 4
571
- end
572
-
573
- def bytesize; 6; end
574
- }.new
575
- forms << Form.new(operands, encodings)
576
- operands = []
577
- encodings = []
543
+ operands[0].op_value, operands) +
544
+ add_immediate(buffer, operands[1].op_value, 4) +
545
+ 0
546
+ end
547
+ }.new.freeze,
548
+ ].freeze).freeze,
578
549
  # movl: m32, r32
579
- operands << OPERAND_TYPES[37]
580
- operands << OPERAND_TYPES[13]
581
- encodings << Class.new(Fisk::Encoding) {
582
- def encode buffer, operands
583
- add_rex(buffer, operands,
550
+ Form.new([
551
+ OPERAND_TYPES[37],
552
+ OPERAND_TYPES[13],
553
+ ].freeze, [
554
+ Class.new(Fisk::Encoding) {
555
+ def encode buffer, operands
556
+ add_rex(buffer, operands,
584
557
  false,
585
558
  0,
586
559
  operands[1].rex_value,
587
560
  operands[0].rex_value,
588
- operands[0].rex_value)
589
- add_opcode buffer, 0x89, 0
590
- add_modrm(buffer, operands,
561
+ operands[0].rex_value) +
562
+ add_opcode(buffer, 0x89, 0) +
563
+ add_modrm_mem_reg(buffer,
591
564
  0,
592
565
  operands[1].op_value,
593
- operands[0].op_value)
594
- end
595
-
596
- def bytesize; 2; end
597
- }.new
598
- forms << Form.new(operands, encodings)
599
- operands = []
600
- encodings = []
566
+ operands[0].op_value, operands) +
567
+ 0
568
+ end
569
+ }.new.freeze,
570
+ ].freeze).freeze,
601
571
  # movq: m64, imm32
602
- operands << OPERAND_TYPES[44]
603
- operands << OPERAND_TYPES[11]
604
- encodings << Class.new(Fisk::Encoding) {
605
- def encode buffer, operands
606
- add_rex(buffer, operands,
572
+ Form.new([
573
+ OPERAND_TYPES[44],
574
+ OPERAND_TYPES[11],
575
+ ].freeze, [
576
+ Class.new(Fisk::Encoding) {
577
+ def encode buffer, operands
578
+ add_rex(buffer, operands,
607
579
  true,
608
580
  1,
609
581
  0,
610
582
  operands[0].rex_value,
611
- operands[0].rex_value)
612
- add_opcode buffer, 0xC7, 0
613
- add_modrm(buffer, operands,
583
+ operands[0].rex_value) +
584
+ add_opcode(buffer, 0xC7, 0) +
585
+ add_modrm(buffer,
614
586
  0,
615
587
  0,
616
- operands[0].op_value)
617
- add_immediate buffer, operands[1].op_value, 4
618
- end
619
-
620
- def bytesize; 7; end
621
- }.new
622
- forms << Form.new(operands, encodings)
623
- operands = []
624
- encodings = []
588
+ operands[0].op_value, operands) +
589
+ add_immediate(buffer, operands[1].op_value, 4) +
590
+ 0
591
+ end
592
+ }.new.freeze,
593
+ ].freeze).freeze,
625
594
  # movq: m64, r64
626
- operands << OPERAND_TYPES[44]
627
- operands << OPERAND_TYPES[17]
628
- encodings << Class.new(Fisk::Encoding) {
629
- def encode buffer, operands
630
- add_rex(buffer, operands,
595
+ Form.new([
596
+ OPERAND_TYPES[44],
597
+ OPERAND_TYPES[17],
598
+ ].freeze, [
599
+ Class.new(Fisk::Encoding) {
600
+ def encode buffer, operands
601
+ add_rex(buffer, operands,
631
602
  true,
632
603
  1,
633
604
  operands[1].rex_value,
634
605
  operands[0].rex_value,
635
- operands[0].rex_value)
636
- add_opcode buffer, 0x89, 0
637
- add_modrm(buffer, operands,
606
+ operands[0].rex_value) +
607
+ add_opcode(buffer, 0x89, 0) +
608
+ add_modrm_mem_reg(buffer,
638
609
  0,
639
610
  operands[1].op_value,
640
- operands[0].op_value)
641
- end
642
-
643
- def bytesize; 3; end
644
- }.new
645
- forms << Form.new(operands, encodings)
646
- operands = []
647
- encodings = []
611
+ operands[0].op_value, operands) +
612
+ 0
613
+ end
614
+ }.new.freeze,
615
+ ].freeze).freeze,
648
616
  # movabs: moffs32, eax
649
- operands << OPERAND_TYPES[49]
650
- operands << OPERAND_TYPES[33]
651
- encodings << Class.new(Fisk::Encoding) {
652
- def encode buffer, operands
653
- add_opcode buffer, 0xA3, 0
654
- add_data_offset buffer, operands[0].op_value, 4
655
- end
656
-
657
- def bytesize; 1; end
658
- }.new
659
- forms << Form.new(operands, encodings)
660
- operands = []
661
- encodings = []
617
+ Form.new([
618
+ OPERAND_TYPES[49],
619
+ OPERAND_TYPES[33],
620
+ ].freeze, [
621
+ Class.new(Fisk::Encoding) {
622
+ def encode buffer, operands
623
+ add_opcode(buffer, 0xA3, 0) +
624
+ add_data_offset(buffer, operands[0].op_value, 4) +
625
+ 0
626
+ end
627
+ }.new.freeze,
628
+ ].freeze).freeze,
662
629
  # movabs: moffs64, rax
663
- operands << OPERAND_TYPES[51]
664
- operands << OPERAND_TYPES[34]
665
- encodings << Class.new(Fisk::Encoding) {
666
- def encode buffer, operands
667
- add_rex(buffer, operands,
630
+ Form.new([
631
+ OPERAND_TYPES[51],
632
+ OPERAND_TYPES[34],
633
+ ].freeze, [
634
+ Class.new(Fisk::Encoding) {
635
+ def encode buffer, operands
636
+ add_rex(buffer, operands,
668
637
  true,
669
638
  1,
670
639
  0,
671
640
  0,
672
- 0)
673
- add_opcode buffer, 0xA3, 0
674
- add_data_offset buffer, operands[0].op_value, 8
675
- end
676
-
677
- def bytesize; 2; end
678
- }.new
679
- forms << Form.new(operands, encodings)
680
- MOV = Instruction.new("MOV", forms)
641
+ 0) +
642
+ add_opcode(buffer, 0xA3, 0) +
643
+ add_data_offset(buffer, operands[0].op_value, 8) +
644
+ 0
645
+ end
646
+ }.new.freeze,
647
+ ].freeze).freeze,
648
+ ].freeze).freeze
681
649
  end
682
650
  end