Class: Fisk
- Inherits:
-
Object
- Object
- Fisk
- Includes:
- Instructions::DSLMethods
- Defined in:
- lib/fisk.rb,
lib/fisk/errors.rb,
lib/fisk/helpers.rb,
lib/fisk/version.rb,
lib/fisk/encoding.rb,
lib/fisk/basic_block.rb,
lib/fisk/instructions.rb,
lib/fisk/instructions/bt.rb,
lib/fisk/instructions/ja.rb,
lib/fisk/instructions/jb.rb,
lib/fisk/instructions/jc.rb,
lib/fisk/instructions/je.rb,
lib/fisk/instructions/jg.rb,
lib/fisk/instructions/jl.rb,
lib/fisk/instructions/jo.rb,
lib/fisk/instructions/jp.rb,
lib/fisk/instructions/js.rb,
lib/fisk/instructions/jz.rb,
lib/fisk/instructions/or.rb,
lib/fisk/instructions/adc.rb,
lib/fisk/instructions/add.rb,
lib/fisk/instructions/and.rb,
lib/fisk/instructions/bsf.rb,
lib/fisk/instructions/bsr.rb,
lib/fisk/instructions/btc.rb,
lib/fisk/instructions/btr.rb,
lib/fisk/instructions/bts.rb,
lib/fisk/instructions/cbw.rb,
lib/fisk/instructions/cdq.rb,
lib/fisk/instructions/clc.rb,
lib/fisk/instructions/cld.rb,
lib/fisk/instructions/cmc.rb,
lib/fisk/instructions/cmp.rb,
lib/fisk/instructions/cqo.rb,
lib/fisk/instructions/cwd.rb,
lib/fisk/instructions/dec.rb,
lib/fisk/instructions/div.rb,
lib/fisk/instructions/inc.rb,
lib/fisk/instructions/int.rb,
lib/fisk/instructions/jae.rb,
lib/fisk/instructions/jbe.rb,
lib/fisk/instructions/jge.rb,
lib/fisk/instructions/jle.rb,
lib/fisk/instructions/jmp.rb,
lib/fisk/instructions/jna.rb,
lib/fisk/instructions/jnb.rb,
lib/fisk/instructions/jnc.rb,
lib/fisk/instructions/jne.rb,
lib/fisk/instructions/jng.rb,
lib/fisk/instructions/jnl.rb,
lib/fisk/instructions/jno.rb,
lib/fisk/instructions/jnp.rb,
lib/fisk/instructions/jns.rb,
lib/fisk/instructions/jnz.rb,
lib/fisk/instructions/jpe.rb,
lib/fisk/instructions/jpo.rb,
lib/fisk/instructions/lea.rb,
lib/fisk/instructions/mov.rb,
lib/fisk/instructions/mul.rb,
lib/fisk/instructions/neg.rb,
lib/fisk/instructions/nop.rb,
lib/fisk/instructions/not.rb,
lib/fisk/instructions/pop.rb,
lib/fisk/instructions/por.rb,
lib/fisk/instructions/rcl.rb,
lib/fisk/instructions/rcr.rb,
lib/fisk/instructions/ret.rb,
lib/fisk/instructions/rol.rb,
lib/fisk/instructions/ror.rb,
lib/fisk/instructions/sal.rb,
lib/fisk/instructions/sar.rb,
lib/fisk/instructions/sbb.rb,
lib/fisk/instructions/shl.rb,
lib/fisk/instructions/shr.rb,
lib/fisk/instructions/stc.rb,
lib/fisk/instructions/std.rb,
lib/fisk/instructions/sub.rb,
lib/fisk/instructions/ud2.rb,
lib/fisk/instructions/xor.rb,
lib/fisk/instructions/adcx.rb,
lib/fisk/instructions/adox.rb,
lib/fisk/instructions/andn.rb,
lib/fisk/instructions/blci.rb,
lib/fisk/instructions/blcs.rb,
lib/fisk/instructions/blsi.rb,
lib/fisk/instructions/blsr.rb,
lib/fisk/instructions/bzhi.rb,
lib/fisk/instructions/call.rb,
lib/fisk/instructions/cdqe.rb,
lib/fisk/instructions/clwb.rb,
lib/fisk/instructions/cwde.rb,
lib/fisk/instructions/dppd.rb,
lib/fisk/instructions/dpps.rb,
lib/fisk/instructions/emms.rb,
lib/fisk/instructions/idiv.rb,
lib/fisk/instructions/imul.rb,
lib/fisk/instructions/jnae.rb,
lib/fisk/instructions/jnbe.rb,
lib/fisk/instructions/jnge.rb,
lib/fisk/instructions/jnle.rb,
lib/fisk/instructions/korb.rb,
lib/fisk/instructions/kord.rb,
lib/fisk/instructions/korq.rb,
lib/fisk/instructions/korw.rb,
lib/fisk/instructions/movd.rb,
lib/fisk/instructions/movq.rb,
lib/fisk/instructions/mulx.rb,
lib/fisk/instructions/orpd.rb,
lib/fisk/instructions/orps.rb,
lib/fisk/instructions/pand.rb,
lib/fisk/instructions/pdep.rb,
lib/fisk/instructions/pext.rb,
lib/fisk/instructions/push.rb,
lib/fisk/instructions/pxor.rb,
lib/fisk/instructions/rorx.rb,
lib/fisk/instructions/sarx.rb,
lib/fisk/instructions/seta.rb,
lib/fisk/instructions/setb.rb,
lib/fisk/instructions/setc.rb,
lib/fisk/instructions/sete.rb,
lib/fisk/instructions/setg.rb,
lib/fisk/instructions/setl.rb,
lib/fisk/instructions/seto.rb,
lib/fisk/instructions/setp.rb,
lib/fisk/instructions/sets.rb,
lib/fisk/instructions/setz.rb,
lib/fisk/instructions/shld.rb,
lib/fisk/instructions/shlx.rb,
lib/fisk/instructions/shrd.rb,
lib/fisk/instructions/shrx.rb,
lib/fisk/instructions/test.rb,
lib/fisk/instructions/vpor.rb,
lib/fisk/instructions/xadd.rb,
lib/fisk/instructions/xchg.rb,
lib/fisk/instructions/addpd.rb,
lib/fisk/instructions/addps.rb,
lib/fisk/instructions/addsd.rb,
lib/fisk/instructions/addss.rb,
lib/fisk/instructions/andpd.rb,
lib/fisk/instructions/andps.rb,
lib/fisk/instructions/bextr.rb,
lib/fisk/instructions/blcic.rb,
lib/fisk/instructions/blsic.rb,
lib/fisk/instructions/bswap.rb,
lib/fisk/instructions/cmova.rb,
lib/fisk/instructions/cmovb.rb,
lib/fisk/instructions/cmovc.rb,
lib/fisk/instructions/cmove.rb,
lib/fisk/instructions/cmovg.rb,
lib/fisk/instructions/cmovl.rb,
lib/fisk/instructions/cmovo.rb,
lib/fisk/instructions/cmovp.rb,
lib/fisk/instructions/cmovs.rb,
lib/fisk/instructions/cmovz.rb,
lib/fisk/instructions/cmppd.rb,
lib/fisk/instructions/cmpps.rb,
lib/fisk/instructions/cmpsd.rb,
lib/fisk/instructions/cmpss.rb,
lib/fisk/instructions/cpuid.rb,
lib/fisk/instructions/crc32.rb,
lib/fisk/instructions/divpd.rb,
lib/fisk/instructions/divps.rb,
lib/fisk/instructions/divsd.rb,
lib/fisk/instructions/divss.rb,
lib/fisk/instructions/extrq.rb,
lib/fisk/instructions/femms.rb,
lib/fisk/instructions/jecxz.rb,
lib/fisk/instructions/jrcxz.rb,
lib/fisk/instructions/kaddb.rb,
lib/fisk/instructions/kaddd.rb,
lib/fisk/instructions/kaddq.rb,
lib/fisk/instructions/kaddw.rb,
lib/fisk/instructions/kandb.rb,
lib/fisk/instructions/kandd.rb,
lib/fisk/instructions/kandq.rb,
lib/fisk/instructions/kandw.rb,
lib/fisk/instructions/kmovb.rb,
lib/fisk/instructions/kmovd.rb,
lib/fisk/instructions/kmovq.rb,
lib/fisk/instructions/kmovw.rb,
lib/fisk/instructions/knotb.rb,
lib/fisk/instructions/knotd.rb,
lib/fisk/instructions/knotq.rb,
lib/fisk/instructions/knotw.rb,
lib/fisk/instructions/kxorb.rb,
lib/fisk/instructions/kxord.rb,
lib/fisk/instructions/kxorq.rb,
lib/fisk/instructions/kxorw.rb,
lib/fisk/instructions/lddqu.rb,
lib/fisk/instructions/lzcnt.rb,
lib/fisk/instructions/maxpd.rb,
lib/fisk/instructions/maxps.rb,
lib/fisk/instructions/maxsd.rb,
lib/fisk/instructions/maxss.rb,
lib/fisk/instructions/minpd.rb,
lib/fisk/instructions/minps.rb,
lib/fisk/instructions/minsd.rb,
lib/fisk/instructions/minss.rb,
lib/fisk/instructions/movbe.rb,
lib/fisk/instructions/movsd.rb,
lib/fisk/instructions/movss.rb,
lib/fisk/instructions/movsx.rb,
lib/fisk/instructions/movzx.rb,
lib/fisk/instructions/mulpd.rb,
lib/fisk/instructions/mulps.rb,
lib/fisk/instructions/mulsd.rb,
lib/fisk/instructions/mulss.rb,
lib/fisk/instructions/mwait.rb,
lib/fisk/instructions/pabsb.rb,
lib/fisk/instructions/pabsd.rb,
lib/fisk/instructions/pabsw.rb,
lib/fisk/instructions/paddb.rb,
lib/fisk/instructions/paddd.rb,
lib/fisk/instructions/paddq.rb,
lib/fisk/instructions/paddw.rb,
lib/fisk/instructions/pandn.rb,
lib/fisk/instructions/pause.rb,
lib/fisk/instructions/pavgb.rb,
lib/fisk/instructions/pavgw.rb,
lib/fisk/instructions/pf2id.rb,
lib/fisk/instructions/pf2iw.rb,
lib/fisk/instructions/pfacc.rb,
lib/fisk/instructions/pfadd.rb,
lib/fisk/instructions/pfmax.rb,
lib/fisk/instructions/pfmin.rb,
lib/fisk/instructions/pfmul.rb,
lib/fisk/instructions/pfrcp.rb,
lib/fisk/instructions/pfsub.rb,
lib/fisk/instructions/pi2fd.rb,
lib/fisk/instructions/pi2fw.rb,
lib/fisk/instructions/pslld.rb,
lib/fisk/instructions/psllq.rb,
lib/fisk/instructions/psllw.rb,
lib/fisk/instructions/psrad.rb,
lib/fisk/instructions/psraw.rb,
lib/fisk/instructions/psrld.rb,
lib/fisk/instructions/psrlq.rb,
lib/fisk/instructions/psrlw.rb,
lib/fisk/instructions/psubb.rb,
lib/fisk/instructions/psubd.rb,
lib/fisk/instructions/psubq.rb,
lib/fisk/instructions/psubw.rb,
lib/fisk/instructions/ptest.rb,
lib/fisk/instructions/rcpps.rb,
lib/fisk/instructions/rcpss.rb,
lib/fisk/instructions/rdtsc.rb,
lib/fisk/instructions/setae.rb,
lib/fisk/instructions/setbe.rb,
lib/fisk/instructions/setge.rb,
lib/fisk/instructions/setle.rb,
lib/fisk/instructions/setna.rb,
lib/fisk/instructions/setnb.rb,
lib/fisk/instructions/setnc.rb,
lib/fisk/instructions/setne.rb,
lib/fisk/instructions/setng.rb,
lib/fisk/instructions/setnl.rb,
lib/fisk/instructions/setno.rb,
lib/fisk/instructions/setnp.rb,
lib/fisk/instructions/setns.rb,
lib/fisk/instructions/setnz.rb,
lib/fisk/instructions/setpe.rb,
lib/fisk/instructions/setpo.rb,
lib/fisk/instructions/subpd.rb,
lib/fisk/instructions/subps.rb,
lib/fisk/instructions/subsd.rb,
lib/fisk/instructions/subss.rb,
lib/fisk/instructions/tzcnt.rb,
lib/fisk/instructions/tzmsk.rb,
lib/fisk/instructions/vdppd.rb,
lib/fisk/instructions/vdpps.rb,
lib/fisk/instructions/vmovd.rb,
lib/fisk/instructions/vmovq.rb,
lib/fisk/instructions/vorpd.rb,
lib/fisk/instructions/vorps.rb,
lib/fisk/instructions/vpand.rb,
lib/fisk/instructions/vpord.rb,
lib/fisk/instructions/vporq.rb,
lib/fisk/instructions/vpxor.rb,
lib/fisk/instructions/xlatb.rb,
lib/fisk/instructions/xorpd.rb,
lib/fisk/instructions/xorps.rb,
lib/fisk/instructions/aesdec.rb,
lib/fisk/instructions/aesenc.rb,
lib/fisk/instructions/aesimc.rb,
lib/fisk/instructions/andnpd.rb,
lib/fisk/instructions/andnps.rb,
lib/fisk/instructions/blcmsk.rb,
lib/fisk/instructions/blsmsk.rb,
lib/fisk/instructions/clzero.rb,
lib/fisk/instructions/cmovae.rb,
lib/fisk/instructions/cmovbe.rb,
lib/fisk/instructions/cmovge.rb,
lib/fisk/instructions/cmovle.rb,
lib/fisk/instructions/cmovna.rb,
lib/fisk/instructions/cmovnb.rb,
lib/fisk/instructions/cmovnc.rb,
lib/fisk/instructions/cmovne.rb,
lib/fisk/instructions/cmovng.rb,
lib/fisk/instructions/cmovnl.rb,
lib/fisk/instructions/cmovno.rb,
lib/fisk/instructions/cmovnp.rb,
lib/fisk/instructions/cmovns.rb,
lib/fisk/instructions/cmovnz.rb,
lib/fisk/instructions/cmovpe.rb,
lib/fisk/instructions/cmovpo.rb,
lib/fisk/instructions/comisd.rb,
lib/fisk/instructions/comiss.rb,
lib/fisk/instructions/haddpd.rb,
lib/fisk/instructions/haddps.rb,
lib/fisk/instructions/hsubpd.rb,
lib/fisk/instructions/hsubps.rb,
lib/fisk/instructions/kandnb.rb,
lib/fisk/instructions/kandnd.rb,
lib/fisk/instructions/kandnq.rb,
lib/fisk/instructions/kandnw.rb,
lib/fisk/instructions/ktestb.rb,
lib/fisk/instructions/ktestd.rb,
lib/fisk/instructions/ktestq.rb,
lib/fisk/instructions/ktestw.rb,
lib/fisk/instructions/kxnorb.rb,
lib/fisk/instructions/kxnord.rb,
lib/fisk/instructions/kxnorq.rb,
lib/fisk/instructions/kxnorw.rb,
lib/fisk/instructions/lfence.rb,
lib/fisk/instructions/mfence.rb,
lib/fisk/instructions/movapd.rb,
lib/fisk/instructions/movaps.rb,
lib/fisk/instructions/movdqa.rb,
lib/fisk/instructions/movdqu.rb,
lib/fisk/instructions/movhpd.rb,
lib/fisk/instructions/movhps.rb,
lib/fisk/instructions/movlpd.rb,
lib/fisk/instructions/movlps.rb,
lib/fisk/instructions/movnti.rb,
lib/fisk/instructions/movntq.rb,
lib/fisk/instructions/movsxd.rb,
lib/fisk/instructions/movupd.rb,
lib/fisk/instructions/movups.rb,
lib/fisk/instructions/mwaitx.rb,
lib/fisk/instructions/paddsb.rb,
lib/fisk/instructions/paddsw.rb,
lib/fisk/instructions/pextrb.rb,
lib/fisk/instructions/pextrd.rb,
lib/fisk/instructions/pextrq.rb,
lib/fisk/instructions/pextrw.rb,
lib/fisk/instructions/pfnacc.rb,
lib/fisk/instructions/pfsubr.rb,
lib/fisk/instructions/phaddd.rb,
lib/fisk/instructions/phaddw.rb,
lib/fisk/instructions/phsubd.rb,
lib/fisk/instructions/phsubw.rb,
lib/fisk/instructions/pinsrb.rb,
lib/fisk/instructions/pinsrd.rb,
lib/fisk/instructions/pinsrq.rb,
lib/fisk/instructions/pinsrw.rb,
lib/fisk/instructions/pmaxsb.rb,
lib/fisk/instructions/pmaxsd.rb,
lib/fisk/instructions/pmaxsw.rb,
lib/fisk/instructions/pmaxub.rb,
lib/fisk/instructions/pmaxud.rb,
lib/fisk/instructions/pmaxuw.rb,
lib/fisk/instructions/pminsb.rb,
lib/fisk/instructions/pminsd.rb,
lib/fisk/instructions/pminsw.rb,
lib/fisk/instructions/pminub.rb,
lib/fisk/instructions/pminud.rb,
lib/fisk/instructions/pminuw.rb,
lib/fisk/instructions/pmuldq.rb,
lib/fisk/instructions/pmulhw.rb,
lib/fisk/instructions/pmulld.rb,
lib/fisk/instructions/pmullw.rb,
lib/fisk/instructions/popcnt.rb,
lib/fisk/instructions/psadbw.rb,
lib/fisk/instructions/pshufb.rb,
lib/fisk/instructions/pshufd.rb,
lib/fisk/instructions/pshufw.rb,
lib/fisk/instructions/psignb.rb,
lib/fisk/instructions/psignd.rb,
lib/fisk/instructions/psignw.rb,
lib/fisk/instructions/pslldq.rb,
lib/fisk/instructions/psrldq.rb,
lib/fisk/instructions/psubsb.rb,
lib/fisk/instructions/psubsw.rb,
lib/fisk/instructions/pswapd.rb,
lib/fisk/instructions/rdrand.rb,
lib/fisk/instructions/rdseed.rb,
lib/fisk/instructions/rdtscp.rb,
lib/fisk/instructions/setnae.rb,
lib/fisk/instructions/setnbe.rb,
lib/fisk/instructions/setnge.rb,
lib/fisk/instructions/setnle.rb,
lib/fisk/instructions/sfence.rb,
lib/fisk/instructions/shufpd.rb,
lib/fisk/instructions/shufps.rb,
lib/fisk/instructions/sqrtpd.rb,
lib/fisk/instructions/sqrtps.rb,
lib/fisk/instructions/sqrtsd.rb,
lib/fisk/instructions/sqrtss.rb,
lib/fisk/instructions/t1mskc.rb,
lib/fisk/instructions/vaddpd.rb,
lib/fisk/instructions/vaddps.rb,
lib/fisk/instructions/vaddsd.rb,
lib/fisk/instructions/vaddss.rb,
lib/fisk/instructions/vandpd.rb,
lib/fisk/instructions/vandps.rb,
lib/fisk/instructions/vcmppd.rb,
lib/fisk/instructions/vcmpps.rb,
lib/fisk/instructions/vcmpsd.rb,
lib/fisk/instructions/vcmpss.rb,
lib/fisk/instructions/vdivpd.rb,
lib/fisk/instructions/vdivps.rb,
lib/fisk/instructions/vdivsd.rb,
lib/fisk/instructions/vdivss.rb,
lib/fisk/instructions/vlddqu.rb,
lib/fisk/instructions/vmaxpd.rb,
lib/fisk/instructions/vmaxps.rb,
lib/fisk/instructions/vmaxsd.rb,
lib/fisk/instructions/vmaxss.rb,
lib/fisk/instructions/vminpd.rb,
lib/fisk/instructions/vminps.rb,
lib/fisk/instructions/vminsd.rb,
lib/fisk/instructions/vminss.rb,
lib/fisk/instructions/vmovsd.rb,
lib/fisk/instructions/vmovss.rb,
lib/fisk/instructions/vmulpd.rb,
lib/fisk/instructions/vmulps.rb,
lib/fisk/instructions/vmulsd.rb,
lib/fisk/instructions/vmulss.rb,
lib/fisk/instructions/vpabsb.rb,
lib/fisk/instructions/vpabsd.rb,
lib/fisk/instructions/vpabsq.rb,
lib/fisk/instructions/vpabsw.rb,
lib/fisk/instructions/vpaddb.rb,
lib/fisk/instructions/vpaddd.rb,
lib/fisk/instructions/vpaddq.rb,
lib/fisk/instructions/vpaddw.rb,
lib/fisk/instructions/vpandd.rb,
lib/fisk/instructions/vpandn.rb,
lib/fisk/instructions/vpandq.rb,
lib/fisk/instructions/vpavgb.rb,
lib/fisk/instructions/vpavgw.rb,
lib/fisk/instructions/vpcmov.rb,
lib/fisk/instructions/vpcmpb.rb,
lib/fisk/instructions/vpcmpd.rb,
lib/fisk/instructions/vpcmpq.rb,
lib/fisk/instructions/vpcmpw.rb,
lib/fisk/instructions/vpcomb.rb,
lib/fisk/instructions/vpcomd.rb,
lib/fisk/instructions/vpcomq.rb,
lib/fisk/instructions/vpcomw.rb,
lib/fisk/instructions/vpermb.rb,
lib/fisk/instructions/vpermd.rb,
lib/fisk/instructions/vpermq.rb,
lib/fisk/instructions/vpermw.rb,
lib/fisk/instructions/vpperm.rb,
lib/fisk/instructions/vprold.rb,
lib/fisk/instructions/vprolq.rb,
lib/fisk/instructions/vprord.rb,
lib/fisk/instructions/vprorq.rb,
lib/fisk/instructions/vprotb.rb,
lib/fisk/instructions/vprotd.rb,
lib/fisk/instructions/vprotq.rb,
lib/fisk/instructions/vprotw.rb,
lib/fisk/instructions/vpshab.rb,
lib/fisk/instructions/vpshad.rb,
lib/fisk/instructions/vpshaq.rb,
lib/fisk/instructions/vpshaw.rb,
lib/fisk/instructions/vpshlb.rb,
lib/fisk/instructions/vpshld.rb,
lib/fisk/instructions/vpshlq.rb,
lib/fisk/instructions/vpshlw.rb,
lib/fisk/instructions/vpslld.rb,
lib/fisk/instructions/vpsllq.rb,
lib/fisk/instructions/vpsllw.rb,
lib/fisk/instructions/vpsrad.rb,
lib/fisk/instructions/vpsraq.rb,
lib/fisk/instructions/vpsraw.rb,
lib/fisk/instructions/vpsrld.rb,
lib/fisk/instructions/vpsrlq.rb,
lib/fisk/instructions/vpsrlw.rb,
lib/fisk/instructions/vpsubb.rb,
lib/fisk/instructions/vpsubd.rb,
lib/fisk/instructions/vpsubq.rb,
lib/fisk/instructions/vpsubw.rb,
lib/fisk/instructions/vptest.rb,
lib/fisk/instructions/vpxord.rb,
lib/fisk/instructions/vpxorq.rb,
lib/fisk/instructions/vrcpps.rb,
lib/fisk/instructions/vrcpss.rb,
lib/fisk/instructions/vsubpd.rb,
lib/fisk/instructions/vsubps.rb,
lib/fisk/instructions/vsubsd.rb,
lib/fisk/instructions/vsubss.rb,
lib/fisk/instructions/vxorpd.rb,
lib/fisk/instructions/vxorps.rb,
lib/fisk/instructions/xgetbv.rb,
lib/fisk/instructions/blcfill.rb,
lib/fisk/instructions/blendpd.rb,
lib/fisk/instructions/blendps.rb,
lib/fisk/instructions/blsfill.rb,
lib/fisk/instructions/clflush.rb,
lib/fisk/instructions/cmovnae.rb,
lib/fisk/instructions/cmovnbe.rb,
lib/fisk/instructions/cmovnge.rb,
lib/fisk/instructions/cmovnle.rb,
lib/fisk/instructions/cmpxchg.rb,
lib/fisk/instructions/insertq.rb,
lib/fisk/instructions/ldmxcsr.rb,
lib/fisk/instructions/monitor.rb,
lib/fisk/instructions/movddup.rb,
lib/fisk/instructions/movdq2q.rb,
lib/fisk/instructions/movhlps.rb,
lib/fisk/instructions/movlhps.rb,
lib/fisk/instructions/movntdq.rb,
lib/fisk/instructions/movntpd.rb,
lib/fisk/instructions/movntps.rb,
lib/fisk/instructions/movntsd.rb,
lib/fisk/instructions/movntss.rb,
lib/fisk/instructions/movq2dq.rb,
lib/fisk/instructions/mpsadbw.rb,
lib/fisk/instructions/paddusb.rb,
lib/fisk/instructions/paddusw.rb,
lib/fisk/instructions/palignr.rb,
lib/fisk/instructions/pavgusb.rb,
lib/fisk/instructions/pblendw.rb,
lib/fisk/instructions/pcmpeqb.rb,
lib/fisk/instructions/pcmpeqd.rb,
lib/fisk/instructions/pcmpeqq.rb,
lib/fisk/instructions/pcmpeqw.rb,
lib/fisk/instructions/pcmpgtb.rb,
lib/fisk/instructions/pcmpgtd.rb,
lib/fisk/instructions/pcmpgtq.rb,
lib/fisk/instructions/pcmpgtw.rb,
lib/fisk/instructions/pfcmpeq.rb,
lib/fisk/instructions/pfcmpge.rb,
lib/fisk/instructions/pfcmpgt.rb,
lib/fisk/instructions/pfpnacc.rb,
lib/fisk/instructions/pfrsqrt.rb,
lib/fisk/instructions/phaddsw.rb,
lib/fisk/instructions/phsubsw.rb,
lib/fisk/instructions/pmaddwd.rb,
lib/fisk/instructions/pmulhrw.rb,
lib/fisk/instructions/pmulhuw.rb,
lib/fisk/instructions/pmuludq.rb,
lib/fisk/instructions/pshufhw.rb,
lib/fisk/instructions/pshuflw.rb,
lib/fisk/instructions/psubusb.rb,
lib/fisk/instructions/psubusw.rb,
lib/fisk/instructions/roundpd.rb,
lib/fisk/instructions/roundps.rb,
lib/fisk/instructions/roundsd.rb,
lib/fisk/instructions/roundss.rb,
lib/fisk/instructions/rsqrtps.rb,
lib/fisk/instructions/rsqrtss.rb,
lib/fisk/instructions/stmxcsr.rb,
lib/fisk/instructions/syscall.rb,
lib/fisk/instructions/ucomisd.rb,
lib/fisk/instructions/ucomiss.rb,
lib/fisk/instructions/vaesdec.rb,
lib/fisk/instructions/vaesenc.rb,
lib/fisk/instructions/vaesimc.rb,
lib/fisk/instructions/valignd.rb,
lib/fisk/instructions/valignq.rb,
lib/fisk/instructions/vandnpd.rb,
lib/fisk/instructions/vandnps.rb,
lib/fisk/instructions/vcomisd.rb,
lib/fisk/instructions/vcomiss.rb,
lib/fisk/instructions/vexp2pd.rb,
lib/fisk/instructions/vexp2ps.rb,
lib/fisk/instructions/vfrczpd.rb,
lib/fisk/instructions/vfrczps.rb,
lib/fisk/instructions/vfrczsd.rb,
lib/fisk/instructions/vfrczss.rb,
lib/fisk/instructions/vhaddpd.rb,
lib/fisk/instructions/vhaddps.rb,
lib/fisk/instructions/vhsubpd.rb,
lib/fisk/instructions/vhsubps.rb,
lib/fisk/instructions/vmovapd.rb,
lib/fisk/instructions/vmovaps.rb,
lib/fisk/instructions/vmovdqa.rb,
lib/fisk/instructions/vmovdqu.rb,
lib/fisk/instructions/vmovhpd.rb,
lib/fisk/instructions/vmovhps.rb,
lib/fisk/instructions/vmovlpd.rb,
lib/fisk/instructions/vmovlps.rb,
lib/fisk/instructions/vmovupd.rb,
lib/fisk/instructions/vmovups.rb,
lib/fisk/instructions/vpaddsb.rb,
lib/fisk/instructions/vpaddsw.rb,
lib/fisk/instructions/vpandnd.rb,
lib/fisk/instructions/vpandnq.rb,
lib/fisk/instructions/vpcmpub.rb,
lib/fisk/instructions/vpcmpud.rb,
lib/fisk/instructions/vpcmpuq.rb,
lib/fisk/instructions/vpcmpuw.rb,
lib/fisk/instructions/vpcomub.rb,
lib/fisk/instructions/vpcomud.rb,
lib/fisk/instructions/vpcomuq.rb,
lib/fisk/instructions/vpcomuw.rb,
lib/fisk/instructions/vpermpd.rb,
lib/fisk/instructions/vpermps.rb,
lib/fisk/instructions/vpextrb.rb,
lib/fisk/instructions/vpextrd.rb,
lib/fisk/instructions/vpextrq.rb,
lib/fisk/instructions/vpextrw.rb,
lib/fisk/instructions/vphaddd.rb,
lib/fisk/instructions/vphaddw.rb,
lib/fisk/instructions/vphsubd.rb,
lib/fisk/instructions/vphsubw.rb,
lib/fisk/instructions/vpinsrb.rb,
lib/fisk/instructions/vpinsrd.rb,
lib/fisk/instructions/vpinsrq.rb,
lib/fisk/instructions/vpinsrw.rb,
lib/fisk/instructions/vpmaxsb.rb,
lib/fisk/instructions/vpmaxsd.rb,
lib/fisk/instructions/vpmaxsq.rb,
lib/fisk/instructions/vpmaxsw.rb,
lib/fisk/instructions/vpmaxub.rb,
lib/fisk/instructions/vpmaxud.rb,
lib/fisk/instructions/vpmaxuq.rb,
lib/fisk/instructions/vpmaxuw.rb,
lib/fisk/instructions/vpminsb.rb,
lib/fisk/instructions/vpminsd.rb,
lib/fisk/instructions/vpminsq.rb,
lib/fisk/instructions/vpminsw.rb,
lib/fisk/instructions/vpminub.rb,
lib/fisk/instructions/vpminud.rb,
lib/fisk/instructions/vpminuq.rb,
lib/fisk/instructions/vpminuw.rb,
lib/fisk/instructions/vpmovdb.rb,
lib/fisk/instructions/vpmovdw.rb,
lib/fisk/instructions/vpmovqb.rb,
lib/fisk/instructions/vpmovqd.rb,
lib/fisk/instructions/vpmovqw.rb,
lib/fisk/instructions/vpmovwb.rb,
lib/fisk/instructions/vpmuldq.rb,
lib/fisk/instructions/vpmulhw.rb,
lib/fisk/instructions/vpmulld.rb,
lib/fisk/instructions/vpmullq.rb,
lib/fisk/instructions/vpmullw.rb,
lib/fisk/instructions/vprolvd.rb,
lib/fisk/instructions/vprolvq.rb,
lib/fisk/instructions/vprorvd.rb,
lib/fisk/instructions/vprorvq.rb,
lib/fisk/instructions/vpsadbw.rb,
lib/fisk/instructions/vpshufb.rb,
lib/fisk/instructions/vpshufd.rb,
lib/fisk/instructions/vpsignb.rb,
lib/fisk/instructions/vpsignd.rb,
lib/fisk/instructions/vpsignw.rb,
lib/fisk/instructions/vpslldq.rb,
lib/fisk/instructions/vpsllvd.rb,
lib/fisk/instructions/vpsllvq.rb,
lib/fisk/instructions/vpsllvw.rb,
lib/fisk/instructions/vpsravd.rb,
lib/fisk/instructions/vpsravq.rb,
lib/fisk/instructions/vpsravw.rb,
lib/fisk/instructions/vpsrldq.rb,
lib/fisk/instructions/vpsrlvd.rb,
lib/fisk/instructions/vpsrlvq.rb,
lib/fisk/instructions/vpsrlvw.rb,
lib/fisk/instructions/vpsubsb.rb,
lib/fisk/instructions/vpsubsw.rb,
lib/fisk/instructions/vshufpd.rb,
lib/fisk/instructions/vshufps.rb,
lib/fisk/instructions/vsqrtpd.rb,
lib/fisk/instructions/vsqrtps.rb,
lib/fisk/instructions/vsqrtsd.rb,
lib/fisk/instructions/vsqrtss.rb,
lib/fisk/instructions/vtestpd.rb,
lib/fisk/instructions/vtestps.rb,
lib/fisk/instructions/addsubpd.rb,
lib/fisk/instructions/addsubps.rb,
lib/fisk/instructions/blendvpd.rb,
lib/fisk/instructions/blendvps.rb,
lib/fisk/instructions/cvtdq2pd.rb,
lib/fisk/instructions/cvtdq2ps.rb,
lib/fisk/instructions/cvtpd2dq.rb,
lib/fisk/instructions/cvtpd2pi.rb,
lib/fisk/instructions/cvtpd2ps.rb,
lib/fisk/instructions/cvtpi2pd.rb,
lib/fisk/instructions/cvtpi2ps.rb,
lib/fisk/instructions/cvtps2dq.rb,
lib/fisk/instructions/cvtps2pd.rb,
lib/fisk/instructions/cvtps2pi.rb,
lib/fisk/instructions/cvtsd2si.rb,
lib/fisk/instructions/cvtsd2ss.rb,
lib/fisk/instructions/cvtsi2sd.rb,
lib/fisk/instructions/cvtsi2ss.rb,
lib/fisk/instructions/cvtss2sd.rb,
lib/fisk/instructions/cvtss2si.rb,
lib/fisk/instructions/insertps.rb,
lib/fisk/instructions/kortestb.rb,
lib/fisk/instructions/kortestd.rb,
lib/fisk/instructions/kortestq.rb,
lib/fisk/instructions/kortestw.rb,
lib/fisk/instructions/kshiftlb.rb,
lib/fisk/instructions/kshiftld.rb,
lib/fisk/instructions/kshiftlq.rb,
lib/fisk/instructions/kshiftlw.rb,
lib/fisk/instructions/kshiftrb.rb,
lib/fisk/instructions/kshiftrd.rb,
lib/fisk/instructions/kshiftrq.rb,
lib/fisk/instructions/kshiftrw.rb,
lib/fisk/instructions/kunpckbw.rb,
lib/fisk/instructions/kunpckdq.rb,
lib/fisk/instructions/kunpckwd.rb,
lib/fisk/instructions/maskmovq.rb,
lib/fisk/instructions/monitorx.rb,
lib/fisk/instructions/movmskpd.rb,
lib/fisk/instructions/movmskps.rb,
lib/fisk/instructions/movntdqa.rb,
lib/fisk/instructions/movshdup.rb,
lib/fisk/instructions/movsldup.rb,
lib/fisk/instructions/packssdw.rb,
lib/fisk/instructions/packsswb.rb,
lib/fisk/instructions/packusdw.rb,
lib/fisk/instructions/packuswb.rb,
lib/fisk/instructions/pblendvb.rb,
lib/fisk/instructions/pfrcpit1.rb,
lib/fisk/instructions/pfrcpit2.rb,
lib/fisk/instructions/pfrsqit1.rb,
lib/fisk/instructions/pmovmskb.rb,
lib/fisk/instructions/pmovsxbd.rb,
lib/fisk/instructions/pmovsxbq.rb,
lib/fisk/instructions/pmovsxbw.rb,
lib/fisk/instructions/pmovsxdq.rb,
lib/fisk/instructions/pmovsxwd.rb,
lib/fisk/instructions/pmovsxwq.rb,
lib/fisk/instructions/pmovzxbd.rb,
lib/fisk/instructions/pmovzxbq.rb,
lib/fisk/instructions/pmovzxbw.rb,
lib/fisk/instructions/pmovzxdq.rb,
lib/fisk/instructions/pmovzxwd.rb,
lib/fisk/instructions/pmovzxwq.rb,
lib/fisk/instructions/pmulhrsw.rb,
lib/fisk/instructions/prefetch.rb,
lib/fisk/instructions/sha1msg1.rb,
lib/fisk/instructions/sha1msg2.rb,
lib/fisk/instructions/unpckhpd.rb,
lib/fisk/instructions/unpckhps.rb,
lib/fisk/instructions/unpcklpd.rb,
lib/fisk/instructions/unpcklps.rb,
lib/fisk/instructions/vblendpd.rb,
lib/fisk/instructions/vblendps.rb,
lib/fisk/instructions/vfmaddpd.rb,
lib/fisk/instructions/vfmaddps.rb,
lib/fisk/instructions/vfmaddsd.rb,
lib/fisk/instructions/vfmaddss.rb,
lib/fisk/instructions/vfmsubpd.rb,
lib/fisk/instructions/vfmsubps.rb,
lib/fisk/instructions/vfmsubsd.rb,
lib/fisk/instructions/vfmsubss.rb,
lib/fisk/instructions/vldmxcsr.rb,
lib/fisk/instructions/vmovddup.rb,
lib/fisk/instructions/vmovdqu8.rb,
lib/fisk/instructions/vmovhlps.rb,
lib/fisk/instructions/vmovlhps.rb,
lib/fisk/instructions/vmovntdq.rb,
lib/fisk/instructions/vmovntpd.rb,
lib/fisk/instructions/vmovntps.rb,
lib/fisk/instructions/vmpsadbw.rb,
lib/fisk/instructions/vpaddusb.rb,
lib/fisk/instructions/vpaddusw.rb,
lib/fisk/instructions/vpalignr.rb,
lib/fisk/instructions/vpblendd.rb,
lib/fisk/instructions/vpblendw.rb,
lib/fisk/instructions/vpcmpeqb.rb,
lib/fisk/instructions/vpcmpeqd.rb,
lib/fisk/instructions/vpcmpeqq.rb,
lib/fisk/instructions/vpcmpeqw.rb,
lib/fisk/instructions/vpcmpgtb.rb,
lib/fisk/instructions/vpcmpgtd.rb,
lib/fisk/instructions/vpcmpgtq.rb,
lib/fisk/instructions/vpcmpgtw.rb,
lib/fisk/instructions/vpermi2b.rb,
lib/fisk/instructions/vpermi2d.rb,
lib/fisk/instructions/vpermi2q.rb,
lib/fisk/instructions/vpermi2w.rb,
lib/fisk/instructions/vpermt2b.rb,
lib/fisk/instructions/vpermt2d.rb,
lib/fisk/instructions/vpermt2q.rb,
lib/fisk/instructions/vpermt2w.rb,
lib/fisk/instructions/vphaddbd.rb,
lib/fisk/instructions/vphaddbq.rb,
lib/fisk/instructions/vphaddbw.rb,
lib/fisk/instructions/vphadddq.rb,
lib/fisk/instructions/vphaddsw.rb,
lib/fisk/instructions/vphaddwd.rb,
lib/fisk/instructions/vphaddwq.rb,
lib/fisk/instructions/vphsubbw.rb,
lib/fisk/instructions/vphsubdq.rb,
lib/fisk/instructions/vphsubsw.rb,
lib/fisk/instructions/vphsubwd.rb,
lib/fisk/instructions/vplzcntd.rb,
lib/fisk/instructions/vplzcntq.rb,
lib/fisk/instructions/vpmacsdd.rb,
lib/fisk/instructions/vpmacswd.rb,
lib/fisk/instructions/vpmacsww.rb,
lib/fisk/instructions/vpmaddwd.rb,
lib/fisk/instructions/vpmovb2m.rb,
lib/fisk/instructions/vpmovd2m.rb,
lib/fisk/instructions/vpmovm2b.rb,
lib/fisk/instructions/vpmovm2d.rb,
lib/fisk/instructions/vpmovm2q.rb,
lib/fisk/instructions/vpmovm2w.rb,
lib/fisk/instructions/vpmovq2m.rb,
lib/fisk/instructions/vpmovsdb.rb,
lib/fisk/instructions/vpmovsdw.rb,
lib/fisk/instructions/vpmovsqb.rb,
lib/fisk/instructions/vpmovsqd.rb,
lib/fisk/instructions/vpmovsqw.rb,
lib/fisk/instructions/vpmovswb.rb,
lib/fisk/instructions/vpmovw2m.rb,
lib/fisk/instructions/vpmulhuw.rb,
lib/fisk/instructions/vpmuludq.rb,
lib/fisk/instructions/vpopcntd.rb,
lib/fisk/instructions/vpopcntq.rb,
lib/fisk/instructions/vpshufhw.rb,
lib/fisk/instructions/vpshuflw.rb,
lib/fisk/instructions/vpsubusb.rb,
lib/fisk/instructions/vpsubusw.rb,
lib/fisk/instructions/vptestmb.rb,
lib/fisk/instructions/vptestmd.rb,
lib/fisk/instructions/vptestmq.rb,
lib/fisk/instructions/vptestmw.rb,
lib/fisk/instructions/vrangepd.rb,
lib/fisk/instructions/vrangeps.rb,
lib/fisk/instructions/vrangesd.rb,
lib/fisk/instructions/vrangess.rb,
lib/fisk/instructions/vrcp14pd.rb,
lib/fisk/instructions/vrcp14ps.rb,
lib/fisk/instructions/vrcp14sd.rb,
lib/fisk/instructions/vrcp14ss.rb,
lib/fisk/instructions/vrcp28pd.rb,
lib/fisk/instructions/vrcp28ps.rb,
lib/fisk/instructions/vrcp28sd.rb,
lib/fisk/instructions/vrcp28ss.rb,
lib/fisk/instructions/vroundpd.rb,
lib/fisk/instructions/vroundps.rb,
lib/fisk/instructions/vroundsd.rb,
lib/fisk/instructions/vroundss.rb,
lib/fisk/instructions/vrsqrtps.rb,
lib/fisk/instructions/vrsqrtss.rb,
lib/fisk/instructions/vstmxcsr.rb,
lib/fisk/instructions/vucomisd.rb,
lib/fisk/instructions/vucomiss.rb,
lib/fisk/instructions/vzeroall.rb,
lib/fisk/instructions/cmpxchg8b.rb,
lib/fisk/instructions/cvttpd2dq.rb,
lib/fisk/instructions/cvttpd2pi.rb,
lib/fisk/instructions/cvttps2dq.rb,
lib/fisk/instructions/cvttps2pi.rb,
lib/fisk/instructions/cvttsd2si.rb,
lib/fisk/instructions/cvttss2si.rb,
lib/fisk/instructions/extractps.rb,
lib/fisk/instructions/pclmulqdq.rb,
lib/fisk/instructions/pcmpestri.rb,
lib/fisk/instructions/pcmpestrm.rb,
lib/fisk/instructions/pcmpistri.rb,
lib/fisk/instructions/pcmpistrm.rb,
lib/fisk/instructions/pmaddubsw.rb,
lib/fisk/instructions/prefetchw.rb,
lib/fisk/instructions/punpckhbw.rb,
lib/fisk/instructions/punpckhdq.rb,
lib/fisk/instructions/punpckhwd.rb,
lib/fisk/instructions/punpcklbw.rb,
lib/fisk/instructions/punpckldq.rb,
lib/fisk/instructions/punpcklwd.rb,
lib/fisk/instructions/sha1nexte.rb,
lib/fisk/instructions/sha1rnds4.rb,
lib/fisk/instructions/vaddsubpd.rb,
lib/fisk/instructions/vaddsubps.rb,
lib/fisk/instructions/vblendmpd.rb,
lib/fisk/instructions/vblendmps.rb,
lib/fisk/instructions/vblendvpd.rb,
lib/fisk/instructions/vblendvps.rb,
lib/fisk/instructions/vcvtdq2pd.rb,
lib/fisk/instructions/vcvtdq2ps.rb,
lib/fisk/instructions/vcvtpd2dq.rb,
lib/fisk/instructions/vcvtpd2ps.rb,
lib/fisk/instructions/vcvtpd2qq.rb,
lib/fisk/instructions/vcvtph2ps.rb,
lib/fisk/instructions/vcvtps2dq.rb,
lib/fisk/instructions/vcvtps2pd.rb,
lib/fisk/instructions/vcvtps2ph.rb,
lib/fisk/instructions/vcvtps2qq.rb,
lib/fisk/instructions/vcvtqq2pd.rb,
lib/fisk/instructions/vcvtqq2ps.rb,
lib/fisk/instructions/vcvtsd2si.rb,
lib/fisk/instructions/vcvtsd2ss.rb,
lib/fisk/instructions/vcvtsi2sd.rb,
lib/fisk/instructions/vcvtsi2ss.rb,
lib/fisk/instructions/vcvtss2sd.rb,
lib/fisk/instructions/vcvtss2si.rb,
lib/fisk/instructions/vdbpsadbw.rb,
lib/fisk/instructions/vexpandpd.rb,
lib/fisk/instructions/vexpandps.rb,
lib/fisk/instructions/vfnmaddpd.rb,
lib/fisk/instructions/vfnmaddps.rb,
lib/fisk/instructions/vfnmaddsd.rb,
lib/fisk/instructions/vfnmaddss.rb,
lib/fisk/instructions/vfnmsubpd.rb,
lib/fisk/instructions/vfnmsubps.rb,
lib/fisk/instructions/vfnmsubsd.rb,
lib/fisk/instructions/vfnmsubss.rb,
lib/fisk/instructions/vgetexppd.rb,
lib/fisk/instructions/vgetexpps.rb,
lib/fisk/instructions/vgetexpsd.rb,
lib/fisk/instructions/vgetexpss.rb,
lib/fisk/instructions/vinsertps.rb,
lib/fisk/instructions/vmovdqa32.rb,
lib/fisk/instructions/vmovdqa64.rb,
lib/fisk/instructions/vmovdqu16.rb,
lib/fisk/instructions/vmovdqu32.rb,
lib/fisk/instructions/vmovdqu64.rb,
lib/fisk/instructions/vmovmskpd.rb,
lib/fisk/instructions/vmovmskps.rb,
lib/fisk/instructions/vmovntdqa.rb,
lib/fisk/instructions/vmovshdup.rb,
lib/fisk/instructions/vmovsldup.rb,
lib/fisk/instructions/vpackssdw.rb,
lib/fisk/instructions/vpacksswb.rb,
lib/fisk/instructions/vpackusdw.rb,
lib/fisk/instructions/vpackuswb.rb,
lib/fisk/instructions/vpblendmb.rb,
lib/fisk/instructions/vpblendmd.rb,
lib/fisk/instructions/vpblendmq.rb,
lib/fisk/instructions/vpblendmw.rb,
lib/fisk/instructions/vpblendvb.rb,
lib/fisk/instructions/vpermi2pd.rb,
lib/fisk/instructions/vpermi2ps.rb,
lib/fisk/instructions/vpermilpd.rb,
lib/fisk/instructions/vpermilps.rb,
lib/fisk/instructions/vpermt2pd.rb,
lib/fisk/instructions/vpermt2ps.rb,
lib/fisk/instructions/vpexpandd.rb,
lib/fisk/instructions/vpexpandq.rb,
lib/fisk/instructions/vphaddubd.rb,
lib/fisk/instructions/vphaddubq.rb,
lib/fisk/instructions/vphaddubw.rb,
lib/fisk/instructions/vphaddudq.rb,
lib/fisk/instructions/vphadduwd.rb,
lib/fisk/instructions/vphadduwq.rb,
lib/fisk/instructions/vpmacsdqh.rb,
lib/fisk/instructions/vpmacsdql.rb,
lib/fisk/instructions/vpmacssdd.rb,
lib/fisk/instructions/vpmacsswd.rb,
lib/fisk/instructions/vpmacssww.rb,
lib/fisk/instructions/vpmadcswd.rb,
lib/fisk/instructions/vpmovmskb.rb,
lib/fisk/instructions/vpmovsxbd.rb,
lib/fisk/instructions/vpmovsxbq.rb,
lib/fisk/instructions/vpmovsxbw.rb,
lib/fisk/instructions/vpmovsxdq.rb,
lib/fisk/instructions/vpmovsxwd.rb,
lib/fisk/instructions/vpmovsxwq.rb,
lib/fisk/instructions/vpmovusdb.rb,
lib/fisk/instructions/vpmovusdw.rb,
lib/fisk/instructions/vpmovusqb.rb,
lib/fisk/instructions/vpmovusqd.rb,
lib/fisk/instructions/vpmovusqw.rb,
lib/fisk/instructions/vpmovuswb.rb,
lib/fisk/instructions/vpmovzxbd.rb,
lib/fisk/instructions/vpmovzxbq.rb,
lib/fisk/instructions/vpmovzxbw.rb,
lib/fisk/instructions/vpmovzxdq.rb,
lib/fisk/instructions/vpmovzxwd.rb,
lib/fisk/instructions/vpmovzxwq.rb,
lib/fisk/instructions/vpmulhrsw.rb,
lib/fisk/instructions/vptestnmb.rb,
lib/fisk/instructions/vptestnmd.rb,
lib/fisk/instructions/vptestnmq.rb,
lib/fisk/instructions/vptestnmw.rb,
lib/fisk/instructions/vreducepd.rb,
lib/fisk/instructions/vreduceps.rb,
lib/fisk/instructions/vreducesd.rb,
lib/fisk/instructions/vreducess.rb,
lib/fisk/instructions/vscalefpd.rb,
lib/fisk/instructions/vscalefps.rb,
lib/fisk/instructions/vscalefsd.rb,
lib/fisk/instructions/vscalefss.rb,
lib/fisk/instructions/vunpckhpd.rb,
lib/fisk/instructions/vunpckhps.rb,
lib/fisk/instructions/vunpcklpd.rb,
lib/fisk/instructions/vunpcklps.rb,
lib/fisk/instructions/aesdeclast.rb,
lib/fisk/instructions/aesenclast.rb,
lib/fisk/instructions/clflushopt.rb,
lib/fisk/instructions/cmpxchg16b.rb,
lib/fisk/instructions/maskmovdqu.rb,
lib/fisk/instructions/phminposuw.rb,
lib/fisk/instructions/prefetcht0.rb,
lib/fisk/instructions/prefetcht1.rb,
lib/fisk/instructions/prefetcht2.rb,
lib/fisk/instructions/punpckhqdq.rb,
lib/fisk/instructions/punpcklqdq.rb,
lib/fisk/instructions/sha256msg1.rb,
lib/fisk/instructions/sha256msg2.rb,
lib/fisk/instructions/vcvtpd2udq.rb,
lib/fisk/instructions/vcvtpd2uqq.rb,
lib/fisk/instructions/vcvtps2udq.rb,
lib/fisk/instructions/vcvtps2uqq.rb,
lib/fisk/instructions/vcvtsd2usi.rb,
lib/fisk/instructions/vcvtss2usi.rb,
lib/fisk/instructions/vcvttpd2dq.rb,
lib/fisk/instructions/vcvttpd2qq.rb,
lib/fisk/instructions/vcvttps2dq.rb,
lib/fisk/instructions/vcvttps2qq.rb,
lib/fisk/instructions/vcvttsd2si.rb,
lib/fisk/instructions/vcvttss2si.rb,
lib/fisk/instructions/vcvtudq2pd.rb,
lib/fisk/instructions/vcvtudq2ps.rb,
lib/fisk/instructions/vcvtuqq2pd.rb,
lib/fisk/instructions/vcvtuqq2ps.rb,
lib/fisk/instructions/vcvtusi2sd.rb,
lib/fisk/instructions/vcvtusi2ss.rb,
lib/fisk/instructions/vextractps.rb,
lib/fisk/instructions/vfpclasspd.rb,
lib/fisk/instructions/vfpclassps.rb,
lib/fisk/instructions/vfpclasssd.rb,
lib/fisk/instructions/vfpclassss.rb,
lib/fisk/instructions/vgatherdpd.rb,
lib/fisk/instructions/vgatherdps.rb,
lib/fisk/instructions/vgatherqpd.rb,
lib/fisk/instructions/vgatherqps.rb,
lib/fisk/instructions/vgetmantpd.rb,
lib/fisk/instructions/vgetmantps.rb,
lib/fisk/instructions/vgetmantsd.rb,
lib/fisk/instructions/vgetmantss.rb,
lib/fisk/instructions/vmaskmovpd.rb,
lib/fisk/instructions/vmaskmovps.rb,
lib/fisk/instructions/vpclmulqdq.rb,
lib/fisk/instructions/vpcmpestri.rb,
lib/fisk/instructions/vpcmpestrm.rb,
lib/fisk/instructions/vpcmpistri.rb,
lib/fisk/instructions/vpcmpistrm.rb,
lib/fisk/instructions/vperm2f128.rb,
lib/fisk/instructions/vperm2i128.rb,
lib/fisk/instructions/vpermil2pd.rb,
lib/fisk/instructions/vpermil2ps.rb,
lib/fisk/instructions/vpgatherdd.rb,
lib/fisk/instructions/vpgatherdq.rb,
lib/fisk/instructions/vpgatherqd.rb,
lib/fisk/instructions/vpgatherqq.rb,
lib/fisk/instructions/vpmacssdqh.rb,
lib/fisk/instructions/vpmacssdql.rb,
lib/fisk/instructions/vpmadcsswd.rb,
lib/fisk/instructions/vpmaddubsw.rb,
lib/fisk/instructions/vpmaskmovd.rb,
lib/fisk/instructions/vpmaskmovq.rb,
lib/fisk/instructions/vpternlogd.rb,
lib/fisk/instructions/vpternlogq.rb,
lib/fisk/instructions/vpunpckhbw.rb,
lib/fisk/instructions/vpunpckhdq.rb,
lib/fisk/instructions/vpunpckhwd.rb,
lib/fisk/instructions/vpunpcklbw.rb,
lib/fisk/instructions/vpunpckldq.rb,
lib/fisk/instructions/vpunpcklwd.rb,
lib/fisk/instructions/vrsqrt14pd.rb,
lib/fisk/instructions/vrsqrt14ps.rb,
lib/fisk/instructions/vrsqrt14sd.rb,
lib/fisk/instructions/vrsqrt14ss.rb,
lib/fisk/instructions/vrsqrt28pd.rb,
lib/fisk/instructions/vrsqrt28ps.rb,
lib/fisk/instructions/vrsqrt28sd.rb,
lib/fisk/instructions/vrsqrt28ss.rb,
lib/fisk/instructions/vshuff32x4.rb,
lib/fisk/instructions/vshuff64x2.rb,
lib/fisk/instructions/vshufi32x4.rb,
lib/fisk/instructions/vshufi64x2.rb,
lib/fisk/instructions/vzeroupper.rb,
lib/fisk/instructions/prefetchnta.rb,
lib/fisk/instructions/prefetchwt1.rb,
lib/fisk/instructions/sha256rnds2.rb,
lib/fisk/instructions/vaesdeclast.rb,
lib/fisk/instructions/vaesenclast.rb,
lib/fisk/instructions/vcompresspd.rb,
lib/fisk/instructions/vcompressps.rb,
lib/fisk/instructions/vcvttpd2udq.rb,
lib/fisk/instructions/vcvttpd2uqq.rb,
lib/fisk/instructions/vcvttps2udq.rb,
lib/fisk/instructions/vcvttps2uqq.rb,
lib/fisk/instructions/vcvttsd2usi.rb,
lib/fisk/instructions/vcvttss2usi.rb,
lib/fisk/instructions/vfixupimmpd.rb,
lib/fisk/instructions/vfixupimmps.rb,
lib/fisk/instructions/vfixupimmsd.rb,
lib/fisk/instructions/vfixupimmss.rb,
lib/fisk/instructions/vfmadd132pd.rb,
lib/fisk/instructions/vfmadd132ps.rb,
lib/fisk/instructions/vfmadd132sd.rb,
lib/fisk/instructions/vfmadd132ss.rb,
lib/fisk/instructions/vfmadd213pd.rb,
lib/fisk/instructions/vfmadd213ps.rb,
lib/fisk/instructions/vfmadd213sd.rb,
lib/fisk/instructions/vfmadd213ss.rb,
lib/fisk/instructions/vfmadd231pd.rb,
lib/fisk/instructions/vfmadd231ps.rb,
lib/fisk/instructions/vfmadd231sd.rb,
lib/fisk/instructions/vfmadd231ss.rb,
lib/fisk/instructions/vfmaddsubpd.rb,
lib/fisk/instructions/vfmaddsubps.rb,
lib/fisk/instructions/vfmsub132pd.rb,
lib/fisk/instructions/vfmsub132ps.rb,
lib/fisk/instructions/vfmsub132sd.rb,
lib/fisk/instructions/vfmsub132ss.rb,
lib/fisk/instructions/vfmsub213pd.rb,
lib/fisk/instructions/vfmsub213ps.rb,
lib/fisk/instructions/vfmsub213sd.rb,
lib/fisk/instructions/vfmsub213ss.rb,
lib/fisk/instructions/vfmsub231pd.rb,
lib/fisk/instructions/vfmsub231ps.rb,
lib/fisk/instructions/vfmsub231sd.rb,
lib/fisk/instructions/vfmsub231ss.rb,
lib/fisk/instructions/vfmsubaddpd.rb,
lib/fisk/instructions/vfmsubaddps.rb,
lib/fisk/instructions/vinsertf128.rb,
lib/fisk/instructions/vinserti128.rb,
lib/fisk/instructions/vmaskmovdqu.rb,
lib/fisk/instructions/vpcompressd.rb,
lib/fisk/instructions/vpcompressq.rb,
lib/fisk/instructions/vpconflictd.rb,
lib/fisk/instructions/vpconflictq.rb,
lib/fisk/instructions/vphminposuw.rb,
lib/fisk/instructions/vpmadd52huq.rb,
lib/fisk/instructions/vpmadd52luq.rb,
lib/fisk/instructions/vpscatterdd.rb,
lib/fisk/instructions/vpscatterdq.rb,
lib/fisk/instructions/vpscatterqd.rb,
lib/fisk/instructions/vpscatterqq.rb,
lib/fisk/instructions/vpunpckhqdq.rb,
lib/fisk/instructions/vpunpcklqdq.rb,
lib/fisk/instructions/vrndscalepd.rb,
lib/fisk/instructions/vrndscaleps.rb,
lib/fisk/instructions/vrndscalesd.rb,
lib/fisk/instructions/vrndscaless.rb,
lib/fisk/instructions/vscatterdpd.rb,
lib/fisk/instructions/vscatterdps.rb,
lib/fisk/instructions/vscatterqpd.rb,
lib/fisk/instructions/vscatterqps.rb,
lib/fisk/instructions/vbroadcastsd.rb,
lib/fisk/instructions/vbroadcastss.rb,
lib/fisk/instructions/vextractf128.rb,
lib/fisk/instructions/vextracti128.rb,
lib/fisk/instructions/vfnmadd132pd.rb,
lib/fisk/instructions/vfnmadd132ps.rb,
lib/fisk/instructions/vfnmadd132sd.rb,
lib/fisk/instructions/vfnmadd132ss.rb,
lib/fisk/instructions/vfnmadd213pd.rb,
lib/fisk/instructions/vfnmadd213ps.rb,
lib/fisk/instructions/vfnmadd213sd.rb,
lib/fisk/instructions/vfnmadd213ss.rb,
lib/fisk/instructions/vfnmadd231pd.rb,
lib/fisk/instructions/vfnmadd231ps.rb,
lib/fisk/instructions/vfnmadd231sd.rb,
lib/fisk/instructions/vfnmadd231ss.rb,
lib/fisk/instructions/vfnmsub132pd.rb,
lib/fisk/instructions/vfnmsub132ps.rb,
lib/fisk/instructions/vfnmsub132sd.rb,
lib/fisk/instructions/vfnmsub132ss.rb,
lib/fisk/instructions/vfnmsub213pd.rb,
lib/fisk/instructions/vfnmsub213ps.rb,
lib/fisk/instructions/vfnmsub213sd.rb,
lib/fisk/instructions/vfnmsub213ss.rb,
lib/fisk/instructions/vfnmsub231pd.rb,
lib/fisk/instructions/vfnmsub231ps.rb,
lib/fisk/instructions/vfnmsub231sd.rb,
lib/fisk/instructions/vfnmsub231ss.rb,
lib/fisk/instructions/vinsertf32x4.rb,
lib/fisk/instructions/vinsertf32x8.rb,
lib/fisk/instructions/vinsertf64x2.rb,
lib/fisk/instructions/vinsertf64x4.rb,
lib/fisk/instructions/vinserti32x4.rb,
lib/fisk/instructions/vinserti32x8.rb,
lib/fisk/instructions/vinserti64x2.rb,
lib/fisk/instructions/vinserti64x4.rb,
lib/fisk/instructions/vpbroadcastb.rb,
lib/fisk/instructions/vpbroadcastd.rb,
lib/fisk/instructions/vpbroadcastq.rb,
lib/fisk/instructions/vpbroadcastw.rb,
lib/fisk/instructions/vextractf32x4.rb,
lib/fisk/instructions/vextractf32x8.rb,
lib/fisk/instructions/vextractf64x2.rb,
lib/fisk/instructions/vextractf64x4.rb,
lib/fisk/instructions/vextracti32x4.rb,
lib/fisk/instructions/vextracti32x8.rb,
lib/fisk/instructions/vextracti64x2.rb,
lib/fisk/instructions/vextracti64x4.rb,
lib/fisk/instructions/vgatherpf0dpd.rb,
lib/fisk/instructions/vgatherpf0dps.rb,
lib/fisk/instructions/vgatherpf0qpd.rb,
lib/fisk/instructions/vgatherpf0qps.rb,
lib/fisk/instructions/vgatherpf1dpd.rb,
lib/fisk/instructions/vgatherpf1dps.rb,
lib/fisk/instructions/vgatherpf1qpd.rb,
lib/fisk/instructions/vgatherpf1qps.rb,
lib/fisk/instructions/vbroadcastf128.rb,
lib/fisk/instructions/vbroadcasti128.rb,
lib/fisk/instructions/vfmaddsub132pd.rb,
lib/fisk/instructions/vfmaddsub132ps.rb,
lib/fisk/instructions/vfmaddsub213pd.rb,
lib/fisk/instructions/vfmaddsub213ps.rb,
lib/fisk/instructions/vfmaddsub231pd.rb,
lib/fisk/instructions/vfmaddsub231ps.rb,
lib/fisk/instructions/vfmsubadd132pd.rb,
lib/fisk/instructions/vfmsubadd132ps.rb,
lib/fisk/instructions/vfmsubadd213pd.rb,
lib/fisk/instructions/vfmsubadd213ps.rb,
lib/fisk/instructions/vfmsubadd231pd.rb,
lib/fisk/instructions/vfmsubadd231ps.rb,
lib/fisk/instructions/vpmultishiftqb.rb,
lib/fisk/instructions/vscatterpf0dpd.rb,
lib/fisk/instructions/vscatterpf0dps.rb,
lib/fisk/instructions/vscatterpf0qpd.rb,
lib/fisk/instructions/vscatterpf0qps.rb,
lib/fisk/instructions/vscatterpf1dpd.rb,
lib/fisk/instructions/vscatterpf1dps.rb,
lib/fisk/instructions/vscatterpf1qpd.rb,
lib/fisk/instructions/vscatterpf1qps.rb,
lib/fisk/instructions/aeskeygenassist.rb,
lib/fisk/instructions/vbroadcastf32x2.rb,
lib/fisk/instructions/vbroadcastf32x4.rb,
lib/fisk/instructions/vbroadcastf32x8.rb,
lib/fisk/instructions/vbroadcastf64x2.rb,
lib/fisk/instructions/vbroadcastf64x4.rb,
lib/fisk/instructions/vbroadcasti32x2.rb,
lib/fisk/instructions/vbroadcasti32x4.rb,
lib/fisk/instructions/vbroadcasti32x8.rb,
lib/fisk/instructions/vbroadcasti64x2.rb,
lib/fisk/instructions/vbroadcasti64x4.rb,
lib/fisk/instructions/vpbroadcastmb2q.rb,
lib/fisk/instructions/vpbroadcastmw2d.rb,
lib/fisk/instructions/vaeskeygenassist.rb
Defined Under Namespace
Modules: Errors, Helpers, InstructionPredicates, Instructions, OperandPredicates, Registers Classes: AbsoluteJumpInstruction, AbsoluteLocation, CFG, Comment, Encoding, ImmediateOperand, Instruction, Label, Lazy, Lit, M, MOffs64, Memory, Operand, Rel32, Rel8, Relative, RetryRequest, UnknownLabel, UnresolvedJumpInstruction, UnresolvedRIPInstruction, ValueOperand
Constant Summary collapse
- VERSION =
"2.3.0"
Instance Method Summary collapse
-
#absolute(val) ⇒ Object
Creates an “absolute” location.
-
#asm(buf = StringIO.new(''.b), metadata: {}, &block) ⇒ Object
Instance eval’s a given block and writes encoded instructions to
buf
. -
#assign_registers(list, local: false) ⇒ Object
Assign registers to any temporary registers.
-
#basic_blocks ⇒ Object
Return a list of basic blocks for the instructions.
-
#cfg ⇒ Object
Return a cfg for these instructions.
-
#comment(message) ⇒ Object
Insert a comment at the current position in the instructions.
- #gen_with_insn(insns, params) ⇒ Object
-
#imm(val) ⇒ Object
Create a signed immediate value of the right width.
-
#initialize {|_self| ... } ⇒ Fisk
constructor
A new instance of Fisk.
-
#label(name) ⇒ Object
Create a label to be used with jump instructions.
-
#lazy(&block) ⇒ Object
Record a block that will be called during instruction encoding.
- #lit(val) ⇒ Object
- #m(x, displacement = 0) ⇒ Object
- #moffs64(val) ⇒ Object
-
#put_label(name) ⇒ Object
(also: #make_label)
Insert a label named
name
at the current position in the instructions. -
#register(name = "temp") ⇒ Object
Allocate and return a new register.
- #rel32(val) ⇒ Object
- #rel8(val) ⇒ Object
-
#release_all_registers ⇒ Object
Releases all registers that haven’t already been released.
-
#release_register(reg) ⇒ Object
Mark a temporary register as “done being used” at this point in the instructions.
- #rip(displacement = 0) ⇒ Object
-
#to_binary(metadata: {}) ⇒ Object
Encodes all instructions and returns a binary string with the encoded instructions.
-
#uimm(val) ⇒ Object
Create an unsigned immediate value of the right width.
-
#with_register(name = "temp") {|reg| ... } ⇒ Object
Allocate a register and yield it to the block.
-
#write_to(buffer, metadata: {}) ⇒ Object
Encode all instructions and write them to
buffer
.
Methods included from Instructions::DSLMethods
#adc, #adcx, #add, #addpd, #addps, #addsd, #addss, #addsubpd, #addsubps, #adox, #aesdec, #aesdeclast, #aesenc, #aesenclast, #aesimc, #aeskeygenassist, #and, #andn, #andnpd, #andnps, #andpd, #andps, #bextr, #blcfill, #blci, #blcic, #blcmsk, #blcs, #blendpd, #blendps, #blendvpd, #blendvps, #blsfill, #blsi, #blsic, #blsmsk, #blsr, #bsf, #bsr, #bswap, #bt, #btc, #btr, #bts, #bzhi, #call, #cbw, #cdq, #cdqe, #clc, #cld, #clflush, #clflushopt, #clwb, #clzero, #cmc, #cmova, #cmovae, #cmovb, #cmovbe, #cmovc, #cmove, #cmovg, #cmovge, #cmovl, #cmovle, #cmovna, #cmovnae, #cmovnb, #cmovnbe, #cmovnc, #cmovne, #cmovng, #cmovnge, #cmovnl, #cmovnle, #cmovno, #cmovnp, #cmovns, #cmovnz, #cmovo, #cmovp, #cmovpe, #cmovpo, #cmovs, #cmovz, #cmp, #cmppd, #cmpps, #cmpsd, #cmpss, #cmpxchg, #cmpxchg16b, #cmpxchg8b, #comisd, #comiss, #cpuid, #cqo, #crc32, #cvtdq2pd, #cvtdq2ps, #cvtpd2dq, #cvtpd2pi, #cvtpd2ps, #cvtpi2pd, #cvtpi2ps, #cvtps2dq, #cvtps2pd, #cvtps2pi, #cvtsd2si, #cvtsd2ss, #cvtsi2sd, #cvtsi2ss, #cvtss2sd, #cvtss2si, #cvttpd2dq, #cvttpd2pi, #cvttps2dq, #cvttps2pi, #cvttsd2si, #cvttss2si, #cwd, #cwde, #dec, #div, #divpd, #divps, #divsd, #divss, #dppd, #dpps, #emms, #extractps, #extrq, #femms, #haddpd, #haddps, #hsubpd, #hsubps, #idiv, #imul, #inc, #insertps, #insertq, #int, #ja, #jae, #jb, #jbe, #jc, #je, #jecxz, #jg, #jge, #jl, #jle, #jmp, #jna, #jnae, #jnb, #jnbe, #jnc, #jne, #jng, #jnge, #jnl, #jnle, #jno, #jnp, #jns, #jnz, #jo, #jp, #jpe, #jpo, #jrcxz, #js, #jz, #kaddb, #kaddd, #kaddq, #kaddw, #kandb, #kandd, #kandnb, #kandnd, #kandnq, #kandnw, #kandq, #kandw, #kmovb, #kmovd, #kmovq, #kmovw, #knotb, #knotd, #knotq, #knotw, #korb, #kord, #korq, #kortestb, #kortestd, #kortestq, #kortestw, #korw, #kshiftlb, #kshiftld, #kshiftlq, #kshiftlw, #kshiftrb, #kshiftrd, #kshiftrq, #kshiftrw, #ktestb, #ktestd, #ktestq, #ktestw, #kunpckbw, #kunpckdq, #kunpckwd, #kxnorb, #kxnord, #kxnorq, #kxnorw, #kxorb, #kxord, #kxorq, #kxorw, #lddqu, #ldmxcsr, #lea, #lfence, #lzcnt, #maskmovdqu, #maskmovq, #maxpd, #maxps, #maxsd, #maxss, #mfence, #minpd, #minps, #minsd, #minss, #monitor, #monitorx, #mov, #movapd, #movaps, #movbe, #movd, #movddup, #movdq2q, #movdqa, #movdqu, #movhlps, #movhpd, #movhps, #movlhps, #movlpd, #movlps, #movmskpd, #movmskps, #movntdq, #movntdqa, #movnti, #movntpd, #movntps, #movntq, #movntsd, #movntss, #movq, #movq2dq, #movsd, #movshdup, #movsldup, #movss, #movsx, #movsxd, #movupd, #movups, #movzx, #mpsadbw, #mul, #mulpd, #mulps, #mulsd, #mulss, #mulx, #mwait, #mwaitx, #neg, #nop, #not, #or, #orpd, #orps, #pabsb, #pabsd, #pabsw, #packssdw, #packsswb, #packusdw, #packuswb, #paddb, #paddd, #paddq, #paddsb, #paddsw, #paddusb, #paddusw, #paddw, #palignr, #pand, #pandn, #pause, #pavgb, #pavgusb, #pavgw, #pblendvb, #pblendw, #pclmulqdq, #pcmpeqb, #pcmpeqd, #pcmpeqq, #pcmpeqw, #pcmpestri, #pcmpestrm, #pcmpgtb, #pcmpgtd, #pcmpgtq, #pcmpgtw, #pcmpistri, #pcmpistrm, #pdep, #pext, #pextrb, #pextrd, #pextrq, #pextrw, #pf2id, #pf2iw, #pfacc, #pfadd, #pfcmpeq, #pfcmpge, #pfcmpgt, #pfmax, #pfmin, #pfmul, #pfnacc, #pfpnacc, #pfrcp, #pfrcpit1, #pfrcpit2, #pfrsqit1, #pfrsqrt, #pfsub, #pfsubr, #phaddd, #phaddsw, #phaddw, #phminposuw, #phsubd, #phsubsw, #phsubw, #pi2fd, #pi2fw, #pinsrb, #pinsrd, #pinsrq, #pinsrw, #pmaddubsw, #pmaddwd, #pmaxsb, #pmaxsd, #pmaxsw, #pmaxub, #pmaxud, #pmaxuw, #pminsb, #pminsd, #pminsw, #pminub, #pminud, #pminuw, #pmovmskb, #pmovsxbd, #pmovsxbq, #pmovsxbw, #pmovsxdq, #pmovsxwd, #pmovsxwq, #pmovzxbd, #pmovzxbq, #pmovzxbw, #pmovzxdq, #pmovzxwd, #pmovzxwq, #pmuldq, #pmulhrsw, #pmulhrw, #pmulhuw, #pmulhw, #pmulld, #pmullw, #pmuludq, #pop, #popcnt, #por, #prefetch, #prefetchnta, #prefetcht0, #prefetcht1, #prefetcht2, #prefetchw, #prefetchwt1, #psadbw, #pshufb, #pshufd, #pshufhw, #pshuflw, #pshufw, #psignb, #psignd, #psignw, #pslld, #pslldq, #psllq, #psllw, #psrad, #psraw, #psrld, #psrldq, #psrlq, #psrlw, #psubb, #psubd, #psubq, #psubsb, #psubsw, #psubusb, #psubusw, #psubw, #pswapd, #ptest, #punpckhbw, #punpckhdq, #punpckhqdq, #punpckhwd, #punpcklbw, #punpckldq, #punpcklqdq, #punpcklwd, #push, #pxor, #rcl, #rcpps, #rcpss, #rcr, #rdrand, #rdseed, #rdtsc, #rdtscp, #ret, #rol, #ror, #rorx, #roundpd, #roundps, #roundsd, #roundss, #rsqrtps, #rsqrtss, #sal, #sar, #sarx, #sbb, #seta, #setae, #setb, #setbe, #setc, #sete, #setg, #setge, #setl, #setle, #setna, #setnae, #setnb, #setnbe, #setnc, #setne, #setng, #setnge, #setnl, #setnle, #setno, #setnp, #setns, #setnz, #seto, #setp, #setpe, #setpo, #sets, #setz, #sfence, #sha1msg1, #sha1msg2, #sha1nexte, #sha1rnds4, #sha256msg1, #sha256msg2, #sha256rnds2, #shl, #shld, #shlx, #shr, #shrd, #shrx, #shufpd, #shufps, #sqrtpd, #sqrtps, #sqrtsd, #sqrtss, #stc, #std, #stmxcsr, #sub, #subpd, #subps, #subsd, #subss, #syscall, #t1mskc, #test, #tzcnt, #tzmsk, #ucomisd, #ucomiss, #ud2, #unpckhpd, #unpckhps, #unpcklpd, #unpcklps, #vaddpd, #vaddps, #vaddsd, #vaddss, #vaddsubpd, #vaddsubps, #vaesdec, #vaesdeclast, #vaesenc, #vaesenclast, #vaesimc, #vaeskeygenassist, #valignd, #valignq, #vandnpd, #vandnps, #vandpd, #vandps, #vblendmpd, #vblendmps, #vblendpd, #vblendps, #vblendvpd, #vblendvps, #vbroadcastf128, #vbroadcastf32x2, #vbroadcastf32x4, #vbroadcastf32x8, #vbroadcastf64x2, #vbroadcastf64x4, #vbroadcasti128, #vbroadcasti32x2, #vbroadcasti32x4, #vbroadcasti32x8, #vbroadcasti64x2, #vbroadcasti64x4, #vbroadcastsd, #vbroadcastss, #vcmppd, #vcmpps, #vcmpsd, #vcmpss, #vcomisd, #vcomiss, #vcompresspd, #vcompressps, #vcvtdq2pd, #vcvtdq2ps, #vcvtpd2dq, #vcvtpd2ps, #vcvtpd2qq, #vcvtpd2udq, #vcvtpd2uqq, #vcvtph2ps, #vcvtps2dq, #vcvtps2pd, #vcvtps2ph, #vcvtps2qq, #vcvtps2udq, #vcvtps2uqq, #vcvtqq2pd, #vcvtqq2ps, #vcvtsd2si, #vcvtsd2ss, #vcvtsd2usi, #vcvtsi2sd, #vcvtsi2ss, #vcvtss2sd, #vcvtss2si, #vcvtss2usi, #vcvttpd2dq, #vcvttpd2qq, #vcvttpd2udq, #vcvttpd2uqq, #vcvttps2dq, #vcvttps2qq, #vcvttps2udq, #vcvttps2uqq, #vcvttsd2si, #vcvttsd2usi, #vcvttss2si, #vcvttss2usi, #vcvtudq2pd, #vcvtudq2ps, #vcvtuqq2pd, #vcvtuqq2ps, #vcvtusi2sd, #vcvtusi2ss, #vdbpsadbw, #vdivpd, #vdivps, #vdivsd, #vdivss, #vdppd, #vdpps, #vexp2pd, #vexp2ps, #vexpandpd, #vexpandps, #vextractf128, #vextractf32x4, #vextractf32x8, #vextractf64x2, #vextractf64x4, #vextracti128, #vextracti32x4, #vextracti32x8, #vextracti64x2, #vextracti64x4, #vextractps, #vfixupimmpd, #vfixupimmps, #vfixupimmsd, #vfixupimmss, #vfmadd132pd, #vfmadd132ps, #vfmadd132sd, #vfmadd132ss, #vfmadd213pd, #vfmadd213ps, #vfmadd213sd, #vfmadd213ss, #vfmadd231pd, #vfmadd231ps, #vfmadd231sd, #vfmadd231ss, #vfmaddpd, #vfmaddps, #vfmaddsd, #vfmaddss, #vfmaddsub132pd, #vfmaddsub132ps, #vfmaddsub213pd, #vfmaddsub213ps, #vfmaddsub231pd, #vfmaddsub231ps, #vfmaddsubpd, #vfmaddsubps, #vfmsub132pd, #vfmsub132ps, #vfmsub132sd, #vfmsub132ss, #vfmsub213pd, #vfmsub213ps, #vfmsub213sd, #vfmsub213ss, #vfmsub231pd, #vfmsub231ps, #vfmsub231sd, #vfmsub231ss, #vfmsubadd132pd, #vfmsubadd132ps, #vfmsubadd213pd, #vfmsubadd213ps, #vfmsubadd231pd, #vfmsubadd231ps, #vfmsubaddpd, #vfmsubaddps, #vfmsubpd, #vfmsubps, #vfmsubsd, #vfmsubss, #vfnmadd132pd, #vfnmadd132ps, #vfnmadd132sd, #vfnmadd132ss, #vfnmadd213pd, #vfnmadd213ps, #vfnmadd213sd, #vfnmadd213ss, #vfnmadd231pd, #vfnmadd231ps, #vfnmadd231sd, #vfnmadd231ss, #vfnmaddpd, #vfnmaddps, #vfnmaddsd, #vfnmaddss, #vfnmsub132pd, #vfnmsub132ps, #vfnmsub132sd, #vfnmsub132ss, #vfnmsub213pd, #vfnmsub213ps, #vfnmsub213sd, #vfnmsub213ss, #vfnmsub231pd, #vfnmsub231ps, #vfnmsub231sd, #vfnmsub231ss, #vfnmsubpd, #vfnmsubps, #vfnmsubsd, #vfnmsubss, #vfpclasspd, #vfpclassps, #vfpclasssd, #vfpclassss, #vfrczpd, #vfrczps, #vfrczsd, #vfrczss, #vgatherdpd, #vgatherdps, #vgatherpf0dpd, #vgatherpf0dps, #vgatherpf0qpd, #vgatherpf0qps, #vgatherpf1dpd, #vgatherpf1dps, #vgatherpf1qpd, #vgatherpf1qps, #vgatherqpd, #vgatherqps, #vgetexppd, #vgetexpps, #vgetexpsd, #vgetexpss, #vgetmantpd, #vgetmantps, #vgetmantsd, #vgetmantss, #vhaddpd, #vhaddps, #vhsubpd, #vhsubps, #vinsertf128, #vinsertf32x4, #vinsertf32x8, #vinsertf64x2, #vinsertf64x4, #vinserti128, #vinserti32x4, #vinserti32x8, #vinserti64x2, #vinserti64x4, #vinsertps, #vlddqu, #vldmxcsr, #vmaskmovdqu, #vmaskmovpd, #vmaskmovps, #vmaxpd, #vmaxps, #vmaxsd, #vmaxss, #vminpd, #vminps, #vminsd, #vminss, #vmovapd, #vmovaps, #vmovd, #vmovddup, #vmovdqa, #vmovdqa32, #vmovdqa64, #vmovdqu, #vmovdqu16, #vmovdqu32, #vmovdqu64, #vmovdqu8, #vmovhlps, #vmovhpd, #vmovhps, #vmovlhps, #vmovlpd, #vmovlps, #vmovmskpd, #vmovmskps, #vmovntdq, #vmovntdqa, #vmovntpd, #vmovntps, #vmovq, #vmovsd, #vmovshdup, #vmovsldup, #vmovss, #vmovupd, #vmovups, #vmpsadbw, #vmulpd, #vmulps, #vmulsd, #vmulss, #vorpd, #vorps, #vpabsb, #vpabsd, #vpabsq, #vpabsw, #vpackssdw, #vpacksswb, #vpackusdw, #vpackuswb, #vpaddb, #vpaddd, #vpaddq, #vpaddsb, #vpaddsw, #vpaddusb, #vpaddusw, #vpaddw, #vpalignr, #vpand, #vpandd, #vpandn, #vpandnd, #vpandnq, #vpandq, #vpavgb, #vpavgw, #vpblendd, #vpblendmb, #vpblendmd, #vpblendmq, #vpblendmw, #vpblendvb, #vpblendw, #vpbroadcastb, #vpbroadcastd, #vpbroadcastmb2q, #vpbroadcastmw2d, #vpbroadcastq, #vpbroadcastw, #vpclmulqdq, #vpcmov, #vpcmpb, #vpcmpd, #vpcmpeqb, #vpcmpeqd, #vpcmpeqq, #vpcmpeqw, #vpcmpestri, #vpcmpestrm, #vpcmpgtb, #vpcmpgtd, #vpcmpgtq, #vpcmpgtw, #vpcmpistri, #vpcmpistrm, #vpcmpq, #vpcmpub, #vpcmpud, #vpcmpuq, #vpcmpuw, #vpcmpw, #vpcomb, #vpcomd, #vpcompressd, #vpcompressq, #vpcomq, #vpcomub, #vpcomud, #vpcomuq, #vpcomuw, #vpcomw, #vpconflictd, #vpconflictq, #vperm2f128, #vperm2i128, #vpermb, #vpermd, #vpermi2b, #vpermi2d, #vpermi2pd, #vpermi2ps, #vpermi2q, #vpermi2w, #vpermil2pd, #vpermil2ps, #vpermilpd, #vpermilps, #vpermpd, #vpermps, #vpermq, #vpermt2b, #vpermt2d, #vpermt2pd, #vpermt2ps, #vpermt2q, #vpermt2w, #vpermw, #vpexpandd, #vpexpandq, #vpextrb, #vpextrd, #vpextrq, #vpextrw, #vpgatherdd, #vpgatherdq, #vpgatherqd, #vpgatherqq, #vphaddbd, #vphaddbq, #vphaddbw, #vphaddd, #vphadddq, #vphaddsw, #vphaddubd, #vphaddubq, #vphaddubw, #vphaddudq, #vphadduwd, #vphadduwq, #vphaddw, #vphaddwd, #vphaddwq, #vphminposuw, #vphsubbw, #vphsubd, #vphsubdq, #vphsubsw, #vphsubw, #vphsubwd, #vpinsrb, #vpinsrd, #vpinsrq, #vpinsrw, #vplzcntd, #vplzcntq, #vpmacsdd, #vpmacsdqh, #vpmacsdql, #vpmacssdd, #vpmacssdqh, #vpmacssdql, #vpmacsswd, #vpmacssww, #vpmacswd, #vpmacsww, #vpmadcsswd, #vpmadcswd, #vpmadd52huq, #vpmadd52luq, #vpmaddubsw, #vpmaddwd, #vpmaskmovd, #vpmaskmovq, #vpmaxsb, #vpmaxsd, #vpmaxsq, #vpmaxsw, #vpmaxub, #vpmaxud, #vpmaxuq, #vpmaxuw, #vpminsb, #vpminsd, #vpminsq, #vpminsw, #vpminub, #vpminud, #vpminuq, #vpminuw, #vpmovb2m, #vpmovd2m, #vpmovdb, #vpmovdw, #vpmovm2b, #vpmovm2d, #vpmovm2q, #vpmovm2w, #vpmovmskb, #vpmovq2m, #vpmovqb, #vpmovqd, #vpmovqw, #vpmovsdb, #vpmovsdw, #vpmovsqb, #vpmovsqd, #vpmovsqw, #vpmovswb, #vpmovsxbd, #vpmovsxbq, #vpmovsxbw, #vpmovsxdq, #vpmovsxwd, #vpmovsxwq, #vpmovusdb, #vpmovusdw, #vpmovusqb, #vpmovusqd, #vpmovusqw, #vpmovuswb, #vpmovw2m, #vpmovwb, #vpmovzxbd, #vpmovzxbq, #vpmovzxbw, #vpmovzxdq, #vpmovzxwd, #vpmovzxwq, #vpmuldq, #vpmulhrsw, #vpmulhuw, #vpmulhw, #vpmulld, #vpmullq, #vpmullw, #vpmultishiftqb, #vpmuludq, #vpopcntd, #vpopcntq, #vpor, #vpord, #vporq, #vpperm, #vprold, #vprolq, #vprolvd, #vprolvq, #vprord, #vprorq, #vprorvd, #vprorvq, #vprotb, #vprotd, #vprotq, #vprotw, #vpsadbw, #vpscatterdd, #vpscatterdq, #vpscatterqd, #vpscatterqq, #vpshab, #vpshad, #vpshaq, #vpshaw, #vpshlb, #vpshld, #vpshlq, #vpshlw, #vpshufb, #vpshufd, #vpshufhw, #vpshuflw, #vpsignb, #vpsignd, #vpsignw, #vpslld, #vpslldq, #vpsllq, #vpsllvd, #vpsllvq, #vpsllvw, #vpsllw, #vpsrad, #vpsraq, #vpsravd, #vpsravq, #vpsravw, #vpsraw, #vpsrld, #vpsrldq, #vpsrlq, #vpsrlvd, #vpsrlvq, #vpsrlvw, #vpsrlw, #vpsubb, #vpsubd, #vpsubq, #vpsubsb, #vpsubsw, #vpsubusb, #vpsubusw, #vpsubw, #vpternlogd, #vpternlogq, #vptest, #vptestmb, #vptestmd, #vptestmq, #vptestmw, #vptestnmb, #vptestnmd, #vptestnmq, #vptestnmw, #vpunpckhbw, #vpunpckhdq, #vpunpckhqdq, #vpunpckhwd, #vpunpcklbw, #vpunpckldq, #vpunpcklqdq, #vpunpcklwd, #vpxor, #vpxord, #vpxorq, #vrangepd, #vrangeps, #vrangesd, #vrangess, #vrcp14pd, #vrcp14ps, #vrcp14sd, #vrcp14ss, #vrcp28pd, #vrcp28ps, #vrcp28sd, #vrcp28ss, #vrcpps, #vrcpss, #vreducepd, #vreduceps, #vreducesd, #vreducess, #vrndscalepd, #vrndscaleps, #vrndscalesd, #vrndscaless, #vroundpd, #vroundps, #vroundsd, #vroundss, #vrsqrt14pd, #vrsqrt14ps, #vrsqrt14sd, #vrsqrt14ss, #vrsqrt28pd, #vrsqrt28ps, #vrsqrt28sd, #vrsqrt28ss, #vrsqrtps, #vrsqrtss, #vscalefpd, #vscalefps, #vscalefsd, #vscalefss, #vscatterdpd, #vscatterdps, #vscatterpf0dpd, #vscatterpf0dps, #vscatterpf0qpd, #vscatterpf0qps, #vscatterpf1dpd, #vscatterpf1dps, #vscatterpf1qpd, #vscatterpf1qps, #vscatterqpd, #vscatterqps, #vshuff32x4, #vshuff64x2, #vshufi32x4, #vshufi64x2, #vshufpd, #vshufps, #vsqrtpd, #vsqrtps, #vsqrtsd, #vsqrtss, #vstmxcsr, #vsubpd, #vsubps, #vsubsd, #vsubss, #vtestpd, #vtestps, #vucomisd, #vucomiss, #vunpckhpd, #vunpckhps, #vunpcklpd, #vunpcklps, #vxorpd, #vxorps, #vzeroall, #vzeroupper, #xadd, #xchg, #xgetbv, #xlatb, #xor, #xorpd, #xorps
Constructor Details
#initialize {|_self| ... } ⇒ Fisk
Returns a new instance of Fisk.
511 512 513 514 515 516 517 |
# File 'lib/fisk.rb', line 511 def initialize @instructions = [] @labels = {} # A set of temp registers recorded as we see them (not at allocation time) @temp_registers = Set.new yield self if block_given? end |
Instance Method Details
#absolute(val) ⇒ Object
Creates an “absolute” location. Use this for JUMP instructions where you know the absolute location but want a relative location calculated later.
For example:
fisk.jmp fisk.absolute(0xCAFE)
The emitted JMP instruction will use a calculated relative address (this is because x64 doesn’t have a jump to absolute position).
732 733 734 |
# File 'lib/fisk.rb', line 732 def absolute val AbsoluteLocation.new val end |
#asm(buf = StringIO.new(''.b), metadata: {}, &block) ⇒ Object
748 749 750 751 752 |
# File 'lib/fisk.rb', line 748 def asm buf = StringIO.new(''.b), metadata: {}, &block instance_eval(&block) write_to buf, metadata: buf end |
#assign_registers(list, local: false) ⇒ Object
Assign registers to any temporary registers. Only registers in list
will be used when selecting register assignments
627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 |
# File 'lib/fisk.rb', line 627 def assign_registers list, local: false temp_registers = @temp_registers # This mutates the temp registers, setting their end_point based on # the CFG self.cfg unless local temp_registers.each do |reg| unless reg.end_point raise Errors::UnreleasedRegisterError, "Register #{reg.name} hasn't been released" end end temp_registers = temp_registers.sort_by(&:start_point) active = [] free_registers = list.reverse register_count = list.length temp_registers.each do |temp_reg| # expire old intervals active, dead = active.sort_by(&:end_point).partition do |j| j.end_point >= temp_reg.start_point end # Add unused registers back to the free register list dead.each { |tr| free_registers << tr.register } if active.length == register_count raise NotImplementedError, "Register spilled" end temp_reg.register = free_registers.pop active << temp_reg end end |
#basic_blocks ⇒ Object
Return a list of basic blocks for the instructions
539 540 541 |
# File 'lib/fisk.rb', line 539 def basic_blocks cfg.blocks end |
#cfg ⇒ Object
Return a cfg for these instructions. The CFG includes connected basic blocks as well as any temporary registers
545 546 547 |
# File 'lib/fisk.rb', line 545 def cfg CFG.build @instructions end |
#comment(message) ⇒ Object
Insert a comment at the current position in the instructions.
606 607 608 609 |
# File 'lib/fisk.rb', line 606 def comment @instructions << Comment.new() self end |
#gen_with_insn(insns, params) ⇒ Object
809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 |
# File 'lib/fisk.rb', line 809 def gen_with_insn insns, params forms = insns.forms.find_all do |insn| if insn.operands.length == params.length params.zip(insn.operands).all? { |want_op, have_op| want_op.works?(have_op) } else false end end if forms.length == 0 valid_forms = insns.forms.map { |form| " #{insns.name} #{form.operands.map(&:type).join(", ")}" }.join "\n" msg = <<~eostr Couldn't find instruction #{insns.name} #{params.map(&:type).join(", ")} Valid forms: #{valid_forms} eostr raise NotImplementedError, msg end form = forms.first insn = nil params.each do |param| if param.unresolved? if insns.name =~ /^J/ # I hope all jump instructions start with J! insn = UnresolvedJumpInstruction.new(insns, form, params.first) else # If it's not a jump instruction, assume unresolved RIP relative 😬 insn = UnresolvedRIPInstruction.new(insns, form, params) end end if param.absolute_location? && insns.name =~ /^(?:J|CALL)/ insn = AbsoluteJumpInstruction.new(insns, form, params.first) end if param.temp_register? if param.end_point raise Errors::UseAfterInvalidationError, "Register #{param.name} used after release" end @temp_registers << param param.start_point ||= @instructions.length end end insn ||= Instruction.new(insns, form, params) @instructions << insn self end |
#imm(val) ⇒ Object
Create a signed immediate value of the right width
676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 |
# File 'lib/fisk.rb', line 676 def imm val val = val.to_i if val >= -0x7F - 1 && val <= 0x7F imm8 val elsif val >= -0x7FFF - 1 && val <= 0x7FFF imm16 val elsif val >= -0x7FFFFFFF - 1 && val <= 0x7FFFFFFF imm32 val elsif val >= -0x7FFFFFFFFFFFFFFF - 1 && val <= 0x7FFFFFFFFFFFFFFF imm64 val else raise ArgumentError, "#{val} is larger than a 64 bit int" end end |
#label(name) ⇒ Object
Create a label to be used with jump instructions. For example:
fisk.jmp(fisk.label(:foo))
fisk.int(lit(3))
fisk.put_label(:foo)
555 556 557 |
# File 'lib/fisk.rb', line 555 def label name UnknownLabel.new(name) end |
#lazy(&block) ⇒ Object
Record a block that will be called during instruction encoding. The block will be yielded the current position of the buffer.
For example:
patch_position = nil
fisk.nop
fisk.lazy { |pos| patch_location = pos }
fisk.jmp(fisk.label(:foo))
fisk.lazy { |_|
fisk.mov(fisk.r8, fisk.imm64(patch_location))
}
fisk.write_to(buf)
The first lazy block will be yielded the position of the buffer immediately after encoding the ‘nop` instruction and before encoding the `jmp` instruction. The second lazy block will be yielded to after the `jmp` instruction has been encoded. This gives you a chance to write the buffer position from certain points in to your assembly
589 590 591 592 |
# File 'lib/fisk.rb', line 589 def lazy &block @instructions << Lazy.new(block) self end |
#m(x, displacement = 0) ⇒ Object
257 258 259 |
# File 'lib/fisk.rb', line 257 def m x, displacement = 0 M.new x, displacement end |
#moffs64(val) ⇒ Object
671 672 673 |
# File 'lib/fisk.rb', line 671 def moffs64 val MOffs64.new val end |
#put_label(name) ⇒ Object Also known as: make_label
Insert a label named name
at the current position in the instructions.
595 596 597 598 599 600 601 602 |
# File 'lib/fisk.rb', line 595 def put_label name if @labels.key? name raise Errors::LabelAlreadyDefined, "Label `#{name}` is already defined" end @labels[name] = nil @instructions << Label.new(name) self end |
#register(name = "temp") ⇒ Object
Allocate and return a new register. These registers will be replaced with real registers when ‘assign_registers` is called.
613 614 615 |
# File 'lib/fisk.rb', line 613 def register name = "temp" Registers::Temp.new name, "r64" end |
#release_all_registers ⇒ Object
Releases all registers that haven’t already been released
531 532 533 534 535 536 |
# File 'lib/fisk.rb', line 531 def release_all_registers @temp_registers.each do |reg| next if reg.end_point release_register reg end end |
#release_register(reg) ⇒ Object
Mark a temporary register as “done being used” at this point in the instructions. Using the register after passing the register to this method results in undefined behavior.
522 523 524 525 526 527 528 |
# File 'lib/fisk.rb', line 522 def release_register reg if reg.end_point raise Errors::AlreadyReleasedError, "register #{reg.name} already released at #{reg.end_point}" end reg.end_point = (@instructions.length - 1) end |
#rip(displacement = 0) ⇒ Object
253 254 255 |
# File 'lib/fisk.rb', line 253 def rip displacement = 0 Registers::Rip.new(displacement) end |
#to_binary(metadata: {}) ⇒ Object
Encodes all instructions and returns a binary string with the encoded instructions.
756 757 758 759 760 |
# File 'lib/fisk.rb', line 756 def to_binary(metadata: {}) io = StringIO.new ''.b write_to io, metadata: io.string end |
#uimm(val) ⇒ Object
Create an unsigned immediate value of the right width
693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 |
# File 'lib/fisk.rb', line 693 def uimm val val = val.to_i if val < 0 raise ArgumentError, "#{val} is negative" elsif val <= 0xFF imm8 val elsif val <= 0xFFFF imm16 val elsif val <= 0xFFFFFFFF imm32 val elsif val <= 0xFFFFFFFFFFFFFFFF imm64 val else raise ArgumentError, "#{val} is too large for a 64 bit int" end end |
#with_register(name = "temp") {|reg| ... } ⇒ Object
Allocate a register and yield it to the block. The register will be automatically released after the block is finished.
619 620 621 622 623 |
# File 'lib/fisk.rb', line 619 def with_register name = "temp" reg = register(name) yield reg release_register reg end |
#write_to(buffer, metadata: {}) ⇒ Object
Encode all instructions and write them to buffer
. buffer
should be an IO object.
766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 |
# File 'lib/fisk.rb', line 766 def write_to buffer, metadata: {} labels = {} comments = {} unresolved = [] instructions = @instructions.dup backup = @instructions.dup @instructions.clear while insn = instructions.shift if insn.label? labels[insn.name] = buffer.pos elsif insn.comment? comments.update({buffer.pos => insn.}) { |_, *lines| lines.join($/) } elsif insn.lazy? insn.encode buffer, labels instructions.unshift(*@instructions) @instructions.clear else if insn.retry? retry_req = RetryRequest.new(insn, buffer.pos) unresolved << retry_req end write_instruction insn, buffer, labels end end [:comments] = comments @instructions = backup return if unresolved.empty? pos = buffer.pos unresolved.each do |req| insn = req.insn buffer.seek req.io_seek_pos, IO::SEEK_SET insn.encode buffer, labels end buffer.seek pos, IO::SEEK_SET buffer end |