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