diff --git a/generator/make_unused_opcodes.py b/generator/make_unused_opcodes.py new file mode 100644 index 0000000000000000000000000000000000000000..b3132cb51c49693b5b792b46a4c5c64171f0e194 --- /dev/null +++ b/generator/make_unused_opcodes.py @@ -0,0 +1,1079 @@ +from disasm_to_iclass import lookup_table + +all_opcodes = set(lookup_table.keys()) +used_opcodes = set(["adcb", "adcl", "adcq" + , "adcw" + , "addb" + , "addl" + , "addpd" + , "addps" + , "addq" + , "addsd" + , "addss" + , "addsubpd" + , "addsubps" + , "addw" + , "andb" + , "andl" + , "andnl" + , "andnpd" + , "andnps" + , "andnq" + , "andpd" + , "andps" + , "andq" + , "andw" + , "bextrl" + , "bextrq" + , "blendpd" + , "blendps" + , "blendvpd" + , "blendvps" + , "blsil" + , "blsiq" + , "blsmskl" + , "blsmskq" + , "blsrl" + , "blsrq" + , "bswap" + , "btcl" + , "btcq" + , "btcw" + , "btl" + , "btq" + , "btrl" + , "btrq" + , "btrw" + , "btsl" + , "btsq" + , "btsw" + , "btw" + , "bzhil" + , "bzhiq" + , "cbtw" + , "clc" + , "cltd" + , "cltq" + , "cmc" + , "cmovael" + , "cmovaeq" + , "cmovaew" + , "cmoval" + , "cmovaq" + , "cmovaw" + , "cmovbel" + , "cmovbeq" + , "cmovbew" + , "cmovbe" + , "cmovbl" + , "cmovbq" + , "cmovbw" + , "cmovcl" + , "cmovcq" + , "cmovcw" + , "cmovc" + , "cmovel" + , "cmoveq" + , "cmovew" + , "cmovgel" + , "cmovgeq" + , "cmovgew" + , "cmovge" + , "cmovgl" + , "cmovgq" + , "cmovgw" + , "cmovlel" + , "cmovleq" + , "cmovlew" + , "cmovll" + , "cmovlq" + , "cmovlw" + , "cmovnael" + , "cmovnaeq" + , "cmovnaew" + , "cmovnal" + , "cmovnaq" + , "cmovnaw" + , "cmovnbel" + , "cmovnbeq" + , "cmovnbew" + , "cmovnbl" + , "cmovnbq" + , "cmovnbw" + , "cmovncl" + , "cmovncq" + , "cmovncw" + , "cmovnel" + , "cmovne" + , "cmovneq" + , "cmovnew" + , "cmovngel" + , "cmovngeq" + , "cmovngew" + , "cmovngl" + , "cmovngq" + , "cmovngw" + , "cmovnlel" + , "cmovnleq" + , "cmovnlew" + , "cmovnll" + , "cmovnlq" + , "cmovnlw" + , "cmovnol" + , "cmovnoq" + , "cmovnow" + , "cmovnpl" + , "cmovnpq" + , "cmovnpw" + , "cmovnsl" + , "cmovnsq" + , "cmovnsw" + , "cmovnzl" + , "cmovnzq" + , "cmovnzw" + , "cmovol" + , "cmovoq" + , "cmovow" + , "cmovpel" + , "cmovpeq" + , "cmovpew" + , "cmovpl" + , "cmovpol" + , "cmovpoq" + , "cmovpow" + , "cmovpq" + , "cmovpw" + , "cmovsl" + , "cmovsq" + , "cmovsw" + , "cmovzl" + , "cmovzq" + , "cmovzw" + , "cmpb" + , "cmpl" + , "cmppd" + , "cmpps" + , "cmpq" + , "cmpsd" + , "cmpss" + , "cmpw" + , "cmpxchg16b" + , "cmpxchg8b" + , "cmpxchgb" + , "cmpxchgl" + , "cmpxchgq" + , "cmpxchgw" + , "comisd" + , "comiss" + , "cqto" + , "cvtdq2pd" + , "cvtdq2ps" + , "cvtpd2dq" + , "cvtpd2ps" + , "cvtpi2pd" + , "cvtpi2ps" + , "cvtps2dq" + , "cvtps2pd" + , "cvtsd2sil" + , "cvtsd2siq" + , "cvtsd2ss" + , "cvtsi2sdl" + , "cvtsi2sdq" + , "cvtsi2ssl" + , "cvtsi2ssq" + , "cvtss2sd" + , "cvtss2sil" + , "cvtss2siq" + , "cvttpd2dq" + , "cvttps2dq" + , "cvttsd2sil" + , "cvttsd2siq" + , "cvttss2sil" + , "cvttss2siq" + , "cwtd" + , "cwtl" + , "decb" + , "decl" + , "decq" + , "decw" + , "divb" + , "divl" + , "divpd" + , "divps" + , "divq" + , "divsd" + , "divss" + , "divw" + , "dppd" + , "dpps" + , "extractps" + , "haddpd" + , "haddps" + , "hsubpd" + , "hsubps" + , "idivb" + , "idivl" + , "idivq" + , "idivw" + , "imulb" + , "imull" + , "imulq" + , "imulw" + , "incb" + , "incl" + , "incq" + , "incw" + , "insertps" + , "lddqu" + , "leal" + , "leaq" + , "leaw" + , "lzcntl" + , "lzcntq" + , "lzcntw" + , "maxpd" + , "maxps" + , "maxsd" + , "maxss" + , "minpd" + , "minps" + , "minsd" + , "minss" + , "movapd" + , "movaps" + , "movb" + , "movbel" + , "movbeq" + , "movbew" + , "movbe" + , "movd" + , "movddup" + , "movdqa" + , "movdqu" + , "movhlps" + , "movhpd" + , "movhps" + , "movl" + , "movlhps" + , "movlpd" + , "movlps" + , "movmskpd" + , "movmskps" + , "movntdq" + , "movntdqa" + , "movnti" + , "movntpd" + , "movntps" + , "movq" + , "movsbl" + , "movsbq" + , "movsbw" + , "movsd" + , "movshdup" + , "movsldup" + , "movslq" + , "movss" + , "movswl" + , "movswq" + , "movupd" + , "movups" + , "movw" + , "movzbl" + , "movzbq" + , "movzbw" + , "movzwl" + , "movzwq" + , "mpsadbw" + , "mulb" + , "mull" + , "mulpd" + , "mulps" + , "mulq" + , "mulsd" + , "mulss" + , "mulw" + , "mulxl" + , "mulxq" + , "mulx" + , "negb" + , "negl" + , "negq" + , "negw" + , "nop" + , "nopl" + , "nopw" + , "notb" + , "notl" + , "notq" + , "notw" + , "orb" + , "orl" + , "orpd" + , "orps" + , "orq" + , "orw" + , "pabsb" + , "pabsd" + , "pabsw" + , "packssdw" + , "packsswb" + , "packusdw" + , "packuswb" + , "paddb" + , "paddd" + , "paddq" + , "paddsb" + , "paddsw" + , "paddusb" + , "paddusw" + , "paddw" + , "palignr" + , "pand" + , "pandn" + , "pavgb" + , "pavgw" + , "pblendvb" + , "pblendw" + , "pclmulqdq" + , "pcmpeqb" + , "pcmpeqd" + , "pcmpeqq" + , "pcmpeqw" + , "pcmpestri" + , "pcmpestrm" + , "pcmpgtb" + , "pcmpgtd" + , "pcmpgtq" + , "pcmpgtw" + , "pcmpistri" + , "pcmpistrm" + , "pdepl" + , "pdepq" + , "pextl" + , "pextq" + , "pextrb" + , "pextrd" + , "pextrq" + , "pextrw" + , "phaddd" + , "phaddsw" + , "phaddw" + , "phminposuw" + , "phsubd" + , "phsubsw" + , "phsubw" + , "pinsrb" + , "pinsrd" + , "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" + , "pmulhuw" + , "pmulhw" + , "pmulld" + , "pmullw" + , "pmuludq" + , "popcntl" + , "popcntq" + , "popcntw" + , "popq" + , "popw" + , "por" + , "psadbw" + , "pshufb" + , "pshufd" + , "pshufhw" + , "pshuflw" + , "psignb" + , "psignd" + , "psignw" + , "pslld" + , "pslldq" + , "psllq" + , "psllw" + , "psrad" + , "psraw" + , "psrld" + , "psrldq" + , "psrlq" + , "psrlw" + , "psubb" + , "psubd" + , "psubq" + , "psubsb" + , "psubsw" + , "psubusb" + , "psubusw" + , "psubw" + , "ptest" + , "punpckhbw" + , "punpckhdq" + , "punpckhqdq" + , "punpckhwd" + , "punpcklbw" + , "punpckldq" + , "punpcklqdq" + , "punpcklwd" + , "pushq" + , "pushw" + , "pxor" + , "rclb" + , "rcll" + , "rclq" + , "rclw" + , "rcpps" + , "rcpss" + , "rcrb" + , "rcrl" + , "rcrq" + , "rcrw" + , "rolb" + , "roll" + , "rolq" + , "rolw" + , "rorb" + , "rorl" + , "rorq" + , "rorw" + , "rorxl" + , "rorxq" + , "rorx" + , "roundpd" + , "roundps" + , "roundsd" + , "roundss" + , "rsqrtps" + , "rsqrtss" + , "salb" + , "sall" + , "salq" + , "salw" + , "sarb" + , "sarl" + , "sarq" + , "sarw" + , "sarxl" + , "sarxq" + , "sbbb" + , "sbbl" + , "sbbq" + , "sbbw" + , "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" + , "shlb" + , "shll" + , "shlq" + , "shlw" + , "shlxl" + , "shlxq" + , "shrb" + , "shrl" + , "shrq" + , "shrw" + , "shrxl" + , "shrxq" + , "shufpd" + , "shufps" + , "sqrtpd" + , "sqrtps" + , "sqrtsd" + , "sqrtss" + , "stc" + , "subb" + , "subl" + , "subpd" + , "subps" + , "subq" + , "subsd" + , "subss" + , "subw" + , "testb" + , "testl" + , "testq" + , "testw" + , "tzcntl" + , "tzcntq" + , "tzcntw" + , "ucomisd" + , "ucomiss" + , "unpckhpd" + , "unpckhps" + , "unpcklpd" + , "unpcklps" + , "vaddpd" + , "vaddps" + , "vaddsd" + , "vaddss" + , "vaddsubpd" + , "vaddsubps" + , "vandnpd" + , "vandnps" + , "vandpd" + , "vandps" + , "vblendpd" + , "vblendps" + , "vblendvpd" + , "vblendvps" + , "vbroadcastf128" + , "vbroadcastsd" + , "vbroadcastss" + , "vcmppd" + , "vcmpps" + , "vcmpsd" + , "vcmpss" + , "vcomisd" + , "vcomiss" + , "vcvtdq2pd" + , "vcvtdq2ps" + , "vcvtpd2dq" + , "vcvtpd2dqx" + , "vcvtpd2ps" + , "vcvtph2ps" + , "vcvtps2dq" + , "vcvtps2pd" + , "vcvtps2ph" + , "vcvtsd2sil" + , "vcvtsd2siq" + , "vcvtsd2ss" + , "vcvtsi2sdl" + , "vcvtsi2sdq" + , "vcvtsi2ssl" + , "vcvtsi2ssq" + , "vcvtsi2ss" + , "vcvtss2sd" + , "vcvtss2sil" + , "vcvtss2siq" + , "vcvttpd2dq" + , "vcvttps2dq" + , "vcvttsd2sil" + , "vcvttsd2siq" + , "vcvttsd2si" + , "vcvttss2sil" + , "vcvttss2siq" + , "vcvttss2si" + , "vdivpd" + , "vdivps" + , "vdivsd" + , "vdivss" + , "vdppd" + , "vdpps" + , "vextractf128" + , "vextracti128" + , "vextractps" + , "vfmadd132pd" + , "vfmadd132ps" + , "vfmadd132sd" + , "vfmadd132ss" + , "vfmadd213pd" + , "vfmadd213ps" + , "vfmadd213sd" + , "vfmadd213ss" + , "vfmadd231pd" + , "vfmadd231ps" + , "vfmadd231sd" + , "vfmadd231ss" + , "vfmaddsub132pd" + , "vfmaddsub132ps" + , "vfmaddsub213pd" + , "vfmaddsub213ps" + , "vfmaddsub231pd" + , "vfmaddsub231ps" + , "vfmsub132pd" + , "vfmsub132ps" + , "vfmsub132sd" + , "vfmsub132ss" + , "vfmsub213pd" + , "vfmsub213ps" + , "vfmsub213sd" + , "vfmsub213ss" + , "vfmsub231pd" + , "vfmsub231ps" + , "vfmsub231sd" + , "vfmsub231ss" + , "vfmsubadd132pd" + , "vfmsubadd132ps" + , "vfmsubadd213pd" + , "vfmsubadd213ps" + , "vfmsubadd231pd" + , "vfmsubadd231ps" + , "vfnmadd132pd" + , "vfnmadd132ps" + , "vfnmadd132sd" + , "vfnmadd132ss" + , "vfnmadd213pd" + , "vfnmadd213ps" + , "vfnmadd213sd" + , "vfnmadd213ss" + , "vfnmadd231pd" + , "vfnmadd231ps" + , "vfnmadd231sd" + , "vfnmadd231ss" + , "vfnmsub132pd" + , "vfnmsub132ps" + , "vfnmsub132sd" + , "vfnmsub132ss" + , "vfnmsub213pd" + , "vfnmsub213ps" + , "vfnmsub213sd" + , "vfnmsub213ss" + , "vfnmsub231pd" + , "vfnmsub231ps" + , "vfnmsub231sd" + , "vfnmsub231ss" + , "vhaddpd" + , "vhaddps" + , "vhsubpd" + , "vhsubps" + , "vinsertf128" + , "vinserti128" + , "vinsertps" + , "vlddqu" + , "vmaskmovpd" + , "vmaskmovps" + , "vmaxpd" + , "vmaxps" + , "vmaxsd" + , "vmaxss" + , "vminpd" + , "vminps" + , "vminsd" + , "vminss" + , "vmovapd" + , "vmovaps" + , "vmovd" + , "vmovddup" + , "vmovdqa" + , "vmovdqu" + , "vmovhlps" + , "vmovhpd" + , "vmovhps" + , "vmovlhps" + , "vmovlpd" + , "vmovlps" + , "vmovmskpd" + , "vmovmskps" + , "vmovntdqa" + , "vmovntpd" + , "vmovntps" + , "vmovq" + , "vmovsd" + , "vmovshdup" + , "vmovsldup" + , "vmovss" + , "vmovupd" + , "vmovups" + , "vmpsadbw" + , "vmulpd" + , "vmulps" + , "vmulsd" + , "vmulss" + , "vorpd" + , "vorps" + , "vpabsb" + , "vpabsd" + , "vpabsw" + , "vpackssdw" + , "vpacksswb" + , "vpackusdw" + , "vpackuswb" + , "vpaddb" + , "vpaddd" + , "vpaddq" + , "vpaddsb" + , "vpaddsw" + , "vpaddusb" + , "vpaddusw" + , "vpaddw" + , "vpalignr" + , "vpand" + , "vpandn" + , "vpavgb" + , "vpavgw" + , "vpblendd" + , "vpblendvb" + , "vpblendw" + , "vpbroadcastb" + , "vpbroadcastd" + , "vpbroadcasti128" + , "vpbroadcastq" + , "vpbroadcastw" + , "vpclmulqdq" + , "vpcmpeqb" + , "vpcmpeqd" + , "vpcmpeqq" + , "vpcmpeqw" + , "vpcmpestri" + , "vpcmpestrm" + , "vpcmpgtb" + , "vpcmpgtd" + , "vpcmpgtq" + , "vpcmpgtw" + , "vpcmpistri" + , "vpcmpistrm" + , "vperm2f128" + , "vperm2i128" + , "vpermd" + , "vpermilpd" + , "vpermilps" + , "vpermpd" + , "vpermps" + , "vpermq" + , "vpextrb" + , "vpextrd" + , "vpextrq" + , "vpextrw" + , "vphaddd" + , "vphaddsw" + , "vphaddw" + , "vphminposuw" + , "vphsubd" + , "vphsubsw" + , "vphsubw" + , "vpinsrb" + , "vpinsrd" + , "vpinsrq" + , "vpinsrw" + , "vpmaddubsw" + , "vpmaddwd" + , "vpmaskmovd" + , "vpmaskmovq" + , "vpmaxsb" + , "vpmaxsd" + , "vpmaxsw" + , "vpmaxub" + , "vpmaxud" + , "vpmaxuw" + , "vpminsb" + , "vpminsd" + , "vpminsw" + , "vpminub" + , "vpminud" + , "vpminuw" + , "vpmovmskb" + , "vpmovsxbd" + , "vpmovsxbq" + , "vpmovsxbw" + , "vpmovsxdq" + , "vpmovsxwd" + , "vpmovsxwq" + , "vpmovzxbd" + , "vpmovzxbq" + , "vpmovzxbw" + , "vpmovzxdq" + , "vpmovzxwd" + , "vpmovzxwq" + , "vpmuldq" + , "vpmulhrsw" + , "vpmulhuw" + , "vpmulhw" + , "vpmulld" + , "vpmullw" + , "vpmuludq" + , "vpor" + , "vpsadbw" + , "vpshufb" + , "vpshufd" + , "vpshufhw" + , "vpshuflw" + , "vpsignb" + , "vpsignd" + , "vpsignw" + , "vpslld" + , "vpslldq" + , "vpsllq" + , "vpsllvd" + , "vpsllvq" + , "vpsllw" + , "vpsrad" + , "vpsravd" + , "vpsraw" + , "vpsrld" + , "vpsrldq" + , "vpsrlq" + , "vpsrlvd" + , "vpsrlvq" + , "vpsrlw" + , "vpsubb" + , "vpsubd" + , "vpsubq" + , "vpsubsb" + , "vpsubsw" + , "vpsubusb" + , "vpsubusw" + , "vpsubw" + , "vptest" + , "vpunpckhbw" + , "vpunpckhdq" + , "vpunpckhqdq" + , "vpunpckhwd" + , "vpunpcklbw" + , "vpunpckldq" + , "vpunpcklqdq" + , "vpunpcklwd" + , "vpvmpgtq" + , "vpxor" + , "vrcpps" + , "vrcpss" + , "vroundpd" + , "vroundps" + , "vroundsd" + , "vroundss" + , "vrsqrtps" + , "vrsqrtss" + , "vshufpd" + , "vshufps" + , "vsqrtpd" + , "vsqrtps" + , "vsqrtsd" + , "vsqrtss" + , "vsubpd" + , "vsubps" + , "vsubsd" + , "vsubss" + , "vtestpd" + , "vtestps" + , "vucomisd" + , "vucomiss" + , "vunpckhpd" + , "vunpckhps" + , "vunpcklpd" + , "vunpcklps" + , "vxorpd" + , "vxorps" + , "vzeroall" + , "vzeroupper" + , "xaddb" + , "xaddl" + , "xaddq" + , "xaddw" + , "xchgb" + , "xchgl" + , "xchgq" + , "xchgw" + , "xorb" + , "xorl" + , "xorpd" + , "xorps" + , "xorq" + , "xorw" + , "call" + , "ret" + , "leave" + , "jmp" + , "je" + , "jne" + , "jns" + , "js" + , "jnc" + , "jb" + , "jae" + , "jnb" + , "jle" + , "jg" + , "jge" + , "jl" + , "jbe" + , "ja" + , "jp" + , "jc" + , "jecxz" + , "jna" + , "jnae" + , "jnbe" + , "jng" + , "jnge" + , "jnl" + , "jnle" + , "jno" + , "jnp" + , "jnz" + , "jo" + , "jpe" + , "jpo" + , "jrcxz" + , "jz" + , "movabsq" + , "vcvtsi2sd" + , "sarx" + , "shlx" + , "shrx" + , "cmovs" + , "cmovns" + , "cmovge" + , "cmove" + , "cmovle" + , "cmovbe" + , "ud2" + , "bsfl" + , "bsfq" + , "bsfw" + , "bsrw" + , "bsrl" + , "bsrq" + , "shldq" + , "shldl" + , "shldw" + , "shrdq" + , "shrdl" + , "shrdw" + , "pcmpestri" + , "pcmpestrm" + , "pcmpistri" + , "pcmpistrm" + , "loop" + , "loope" + , "loopne" + , "loopz" + , "loopnz" + , "scasb" + , "repz scasb" + , "repe scasb" + , "repnz scasb" + , "repne scasb" + , "scasw" + , "repz scasw" + , "repe scasw" + , "repnz scasw" + , "repne scasw" + , "scasl" + , "repz scasl" + , "repe scasl" + , "repnz scasl" + , "repne scasl" + , "scasq" + , "repz scasq" + , "repe scasq" + , "repnz scasq" + , "repne scasq" + , "std" + , "cld" + , "stosb" + , "rep stosb" + , "stosw" + , "rep stosw" + , "rep stosl" + , "stosl" + , "stosq" + , "rep stosq" + , "cmpsb" + , "repz cmpsb" + , "repe cmpsb" + , "repnz cmpsb" + , "repne cmpsb" + , "cmpsw" + , "repz cmpsw" + , "repe cmpsw" + , "repnz cmpsw" + , "repne cmpsw" + , "cmpsl" + , "repz cmpsl" + , "repe cmpsl" + , "repnz cmpsl" + , "repne cmpsl" + , "cmpsq" + , "repz cmpsq" + , "repe cmpsq" + , "repnz cmpsq" + , "repne cmpsq" + , "lodsb" + , "rep lodsb" + , "lodsw" + , "rep lodsw" + , "lodsl" + , "rep lodsl" + , "lodsq" + , "rep lodsq" + , "movsb" + , "rep movsb" + , "movsw" + , "rep movsw" + , "movsl" + , "rep movsl" + , "movsq" + , "rep movsq" + , "maskmovdqu" + , "vmaskmovdqu" + , "push" + , "pop" + , "mov" + , "sub" + , "dec" + , "cmp" + , "lea" + , "add" + , "inc" + , "nop" + , "retq" + , "callq" + , "jmpq" + , "leaveq"]) + + +def remove_prefix(opcode): + return opcode[opcode.find(" ") + 1:] + +removed_prefixes = set([remove_prefix(opcode) for opcode in used_opcodes]) + +#assert used_opcodes & all_opcodes == used_opcodes +print(len(removed_prefixes)) + +troublesome_opcodes = removed_prefixes - all_opcodes # We have definitions for opcodes we can't ever decode. + +print(len(troublesome_opcodes)) +print(troublesome_opcodes) + +unused_opcodes = all_opcodes - used_opcodes diff --git a/semantics-glue.k b/semantics-glue.k new file mode 100644 index 0000000000000000000000000000000000000000..10af82c3d0e27657ff3ea8eca4d74747e77eea0d --- /dev/null +++ b/semantics-glue.k @@ -0,0 +1,254 @@ +require "x86-syntax.k" +require "registers.k" + +module DISASSEMBLER-TO-SEMANTICS + imports DOMAINS + imports X86-SYNTAX + + syntax Register ::= DissassemblerRegisterToSemanticsRegister(K, Bool) [function] + syntax Opcode ::= DissassemblerToOpcode(Int, String, String) [function] + + syntax String ::= RegisterToString(K,Bool) [function] + rule DisassemblerRegisterToSemanticsRegister(REG_INVALID, _) => %invalid + rule DisassemblerRegisterToSemanticsRegister(REG_BND0, _) => %bnd0 + rule DisassemblerRegisterToSemanticsRegister(REG_BND1, _) => %bnd1 + rule DisassemblerRegisterToSemanticsRegister(REG_BND2, _) => %bnd2 + rule DisassemblerRegisterToSemanticsRegister(REG_BND3, _) => %bnd3 + rule DisassemblerRegisterToSemanticsRegister(REG_CR0, _) => %cr0 + rule DisassemblerRegisterToSemanticsRegister(REG_CR2, _) => %cr2 + rule DisassemblerRegisterToSemanticsRegister(REG_CR3, _) => %cr3 + rule DisassemblerRegisterToSemanticsRegister(REG_CR4, _) => %cr4 + rule DisassemblerRegisterToSemanticsRegister(REG_CR8, _) => %cr8 + rule DisassemblerRegisterToSemanticsRegister(REG_DR0, _) => %dr0 + rule DisassemblerRegisterToSemanticsRegister(REG_DR1, _) => %dr1 + rule DisassemblerRegisterToSemanticsRegister(REG_DR2, _) => %dr2 + rule DisassemblerRegisterToSemanticsRegister(REG_DR3, _) => %dr3 + rule DisassemblerRegisterToSemanticsRegister(REG_DR4, _) => %dr4 + rule DisassemblerRegisterToSemanticsRegister(REG_DR5, _) => %dr5 + rule DisassemblerRegisterToSemanticsRegister(REG_DR6, _) => %dr6 + rule DisassemblerRegisterToSemanticsRegister(REG_DR7, _) => %dr7 + rule DisassemblerRegisterToSemanticsRegister(REG_FLAGS, _) => %flags + rule DisassemblerRegisterToSemanticsRegister(REG_EFLAGS, _) => %eflags + rule DisassemblerRegisterToSemanticsRegister(REG_RFLAGS, _) => %rflags + rule DisassemblerRegisterToSemanticsRegister(REG_AX, _) => %ax + rule DisassemblerRegisterToSemanticsRegister(REG_CX, _) => %cx + rule DisassemblerRegisterToSemanticsRegister(REG_DX, _) => %dx + rule DisassemblerRegisterToSemanticsRegister(REG_BX, _) => %bx + rule DisassemblerRegisterToSemanticsRegister(REG_SP, _) => %sp + rule DisassemblerRegisterToSemanticsRegister(REG_BP, _) => %bp + rule DisassemblerRegisterToSemanticsRegister(REG_SI, _) => %si + rule DisassemblerRegisterToSemanticsRegister(REG_DI, _) => %di + rule DisassemblerRegisterToSemanticsRegister(REG_R8W, _) => %r8w + rule DisassemblerRegisterToSemanticsRegister(REG_R9W, _) => %r9w + rule DisassemblerRegisterToSemanticsRegister(REG_R10W, _) => %r10w + rule DisassemblerRegisterToSemanticsRegister(REG_R11W, _) => %r11w + rule DisassemblerRegisterToSemanticsRegister(REG_R12W, _) => %r12w + rule DisassemblerRegisterToSemanticsRegister(REG_R13W, _) => %r13w + rule DisassemblerRegisterToSemanticsRegister(REG_R14W, _) => %r14w + rule DisassemblerRegisterToSemanticsRegister(REG_R15W, _) => %r15w + rule DisassemblerRegisterToSemanticsRegister(REG_EAX, _) => %eax + rule DisassemblerRegisterToSemanticsRegister(REG_ECX, _) => %ecx + rule DisassemblerRegisterToSemanticsRegister(REG_EDX, _) => %edx + rule DisassemblerRegisterToSemanticsRegister(REG_EBX, _) => %ebx + rule DisassemblerRegisterToSemanticsRegister(REG_ESP, _) => %esp + rule DisassemblerRegisterToSemanticsRegister(REG_EBP, _) => %ebp + rule DisassemblerRegisterToSemanticsRegister(REG_ESI, _) => %esi + rule DisassemblerRegisterToSemanticsRegister(REG_EDI, _) => %edi + rule DisassemblerRegisterToSemanticsRegister(REG_R8D, _) => %r8d + rule DisassemblerRegisterToSemanticsRegister(REG_R9D, _) => %r9d + rule DisassemblerRegisterToSemanticsRegister(REG_R10D, _) => %r10d + rule DisassemblerRegisterToSemanticsRegister(REG_R11D, _) => %r11d + rule DisassemblerRegisterToSemanticsRegister(REG_R12D, _) => %r12d + rule DisassemblerRegisterToSemanticsRegister(REG_R13D, _) => %r13d + rule DisassemblerRegisterToSemanticsRegister(REG_R14D, _) => %r14d + rule DisassemblerRegisterToSemanticsRegister(REG_R15D, _) => %r15d + rule DisassemblerRegisterToSemanticsRegister(REG_RAX, _) => %rax + rule DisassemblerRegisterToSemanticsRegister(REG_RCX, _) => %rcx + rule DisassemblerRegisterToSemanticsRegister(REG_RDX, _) => %rdx + rule DisassemblerRegisterToSemanticsRegister(REG_RBX, _) => %rbx + rule DisassemblerRegisterToSemanticsRegister(REG_RSP, _) => %rsp + rule DisassemblerRegisterToSemanticsRegister(REG_RBP, _) => %rbp + rule DisassemblerRegisterToSemanticsRegister(REG_RSI, _) => %rsi + rule DisassemblerRegisterToSemanticsRegister(REG_RDI, _) => %rdi + rule DisassemblerRegisterToSemanticsRegister(REG_R8, _) => %r8 + rule DisassemblerRegisterToSemanticsRegister(REG_R9, _) => %r9 + rule DisassemblerRegisterToSemanticsRegister(REG_R10, _) => %r10 + rule DisassemblerRegisterToSemanticsRegister(REG_R11, _) => %r11 + rule DisassemblerRegisterToSemanticsRegister(REG_R12, _) => %r12 + rule DisassemblerRegisterToSemanticsRegister(REG_R13, _) => %r13 + rule DisassemblerRegisterToSemanticsRegister(REG_R14, _) => %r14 + rule DisassemblerRegisterToSemanticsRegister(REG_R15, _) => %r15 + rule DisassemblerRegisterToSemanticsRegister(REG_AL, _) => %al + rule DisassemblerRegisterToSemanticsRegister(REG_CL, _) => %cl + rule DisassemblerRegisterToSemanticsRegister(REG_DL, _) => %dl + rule DisassemblerRegisterToSemanticsRegister(REG_BL, _) => %bl + rule DisassemblerRegisterToSemanticsRegister(REG_SPL, _) => %spl + rule DisassemblerRegisterToSemanticsRegister(REG_BPL, _) => %bpl + rule DisassemblerRegisterToSemanticsRegister(REG_SIL, _) => %sil + rule DisassemblerRegisterToSemanticsRegister(REG_DIL, _) => %dil + rule DisassemblerRegisterToSemanticsRegister(REG_R8B, _) => %r8b + rule DisassemblerRegisterToSemanticsRegister(REG_R9B, _) => %r9b + rule DisassemblerRegisterToSemanticsRegister(REG_R10B, _) => %r10b + rule DisassemblerRegisterToSemanticsRegister(REG_R11B, _) => %r11b + rule DisassemblerRegisterToSemanticsRegister(REG_R12B, _) => %r12b + rule DisassemblerRegisterToSemanticsRegister(REG_R13B, _) => %r13b + rule DisassemblerRegisterToSemanticsRegister(REG_R14B, _) => %r14b + rule DisassemblerRegisterToSemanticsRegister(REG_R15B, _) => %r15b + rule DisassemblerRegisterToSemanticsRegister(REG_AH, _) => %ah + rule DisassemblerRegisterToSemanticsRegister(REG_CH, _) => %ch + rule DisassemblerRegisterToSemanticsRegister(REG_DH, _) => %dh + rule DisassemblerRegisterToSemanticsRegister(REG_BH, _) => %bh + rule DisassemblerRegisterToSemanticsRegister(REG_ERROR, _) => %error + rule DisassemblerRegisterToSemanticsRegister(REG_RIP, _) => %rip + rule DisassemblerRegisterToSemanticsRegister(REG_EIP, _) => %eip + rule DisassemblerRegisterToSemanticsRegister(REG_IP, _) => %ip + rule DisassemblerRegisterToSemanticsRegister(REG_K0, _) => %k0 + rule DisassemblerRegisterToSemanticsRegister(REG_K1, _) => %k1 + rule DisassemblerRegisterToSemanticsRegister(REG_K2, _) => %k2 + rule DisassemblerRegisterToSemanticsRegister(REG_K3, _) => %k3 + rule DisassemblerRegisterToSemanticsRegister(REG_K4, _) => %k4 + rule DisassemblerRegisterToSemanticsRegister(REG_K5, _) => %k5 + rule DisassemblerRegisterToSemanticsRegister(REG_K6, _) => %k6 + rule DisassemblerRegisterToSemanticsRegister(REG_K7, _) => %k7 + rule DisassemblerRegisterToSemanticsRegister(REG_MMX0, _) => %mmx0 + rule DisassemblerRegisterToSemanticsRegister(REG_MMX1, _) => %mmx1 + rule DisassemblerRegisterToSemanticsRegister(REG_MMX2, _) => %mmx2 + rule DisassemblerRegisterToSemanticsRegister(REG_MMX3, _) => %mmx3 + rule DisassemblerRegisterToSemanticsRegister(REG_MMX4, _) => %mmx4 + rule DisassemblerRegisterToSemanticsRegister(REG_MMX5, _) => %mmx5 + rule DisassemblerRegisterToSemanticsRegister(REG_MMX6, _) => %mmx6 + rule DisassemblerRegisterToSemanticsRegister(REG_MMX7, _) => %mmx7 + rule DisassemblerRegisterToSemanticsRegister(REG_SSP, _) => %ssp + rule DisassemblerRegisterToSemanticsRegister(REG_MXCSR, _) => %mxcsr + rule DisassemblerRegisterToSemanticsRegister(REG_STACKPUSH, _) => %stackpush + rule DisassemblerRegisterToSemanticsRegister(REG_STACKPOP, _) => %stackpop + rule DisassemblerRegisterToSemanticsRegister(REG_GDTR, _) => %gdtr + rule DisassemblerRegisterToSemanticsRegister(REG_LDTR, _) => %ldtr + rule DisassemblerRegisterToSemanticsRegister(REG_IDTR, _) => %idtr + rule DisassemblerRegisterToSemanticsRegister(REG_TR, _) => %tr + rule DisassemblerRegisterToSemanticsRegister(REG_TSC, _) => %tsc + rule DisassemblerRegisterToSemanticsRegister(REG_TSCAUX, _) => %tscaux + rule DisassemblerRegisterToSemanticsRegister(REG_MSRS, _) => %msrs + rule DisassemblerRegisterToSemanticsRegister(REG_FSBASE, _) => %fsbase + rule DisassemblerRegisterToSemanticsRegister(REG_GSBASE, _) => %gsbase + rule DisassemblerRegisterToSemanticsRegister(REG_X87CONTROL, _) => %x87control + rule DisassemblerRegisterToSemanticsRegister(REG_X87STATUS, _) => %x87status + rule DisassemblerRegisterToSemanticsRegister(REG_X87TAG, _) => %x87tag + rule DisassemblerRegisterToSemanticsRegister(REG_X87PUSH, _) => %x87push + rule DisassemblerRegisterToSemanticsRegister(REG_X87POP, _) => %x87pop + rule DisassemblerRegisterToSemanticsRegister(REG_X87POP2, _) => %x87pop2 + rule DisassemblerRegisterToSemanticsRegister(REG_CS, _) => %cs + rule DisassemblerRegisterToSemanticsRegister(REG_DS, _) => %ds + rule DisassemblerRegisterToSemanticsRegister(REG_ES, _) => %es + rule DisassemblerRegisterToSemanticsRegister(REG_SS, _) => %ss + rule DisassemblerRegisterToSemanticsRegister(REG_FS, _) => %fs + rule DisassemblerRegisterToSemanticsRegister(REG_GS, _) => %gs +rule DisassemblerRegisterToSemanticsRegister(REG_ST0, false) => %st(0) + rule DisassemblerRegisterToSemanticsRegister(REG_ST0, true) => %st + rule DisassemblerRegisterToSemanticsRegister(REG_ST1, _) => %st(1) + rule DisassemblerRegisterToSemanticsRegister(REG_ST2, _) => %st(2) + rule DisassemblerRegisterToSemanticsRegister(REG_ST3, _) => %st(3) + rule DisassemblerRegisterToSemanticsRegister(REG_ST4, _) => %st(4) + rule DisassemblerRegisterToSemanticsRegister(REG_ST5, _) => %st(5) + rule DisassemblerRegisterToSemanticsRegister(REG_ST6, _) => %st(6) +rule DisassemblerRegisterToSemanticsRegister(REG_ST7, _) => %st(7) + rule DisassemblerRegisterToSemanticsRegister(REG_XCR0, _) => %xcr0 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM0, _) => %xmm0 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM1, _) => %xmm1 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM2, _) => %xmm2 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM3, _) => %xmm3 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM4, _) => %xmm4 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM5, _) => %xmm5 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM6, _) => %xmm6 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM7, _) => %xmm7 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM8, _) => %xmm8 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM9, _) => %xmm9 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM10, _) => %xmm10 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM11, _) => %xmm11 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM12, _) => %xmm12 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM13, _) => %xmm13 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM14, _) => %xmm14 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM15, _) => %xmm15 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM16, _) => %xmm16 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM17, _) => %xmm17 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM18, _) => %xmm18 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM19, _) => %xmm19 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM20, _) => %xmm20 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM21, _) => %xmm21 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM22, _) => %xmm22 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM23, _) => %xmm23 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM24, _) => %xmm24 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM25, _) => %xmm25 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM26, _) => %xmm26 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM27, _) => %xmm27 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM28, _) => %xmm28 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM29, _) => %xmm29 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM30, _) => %xmm30 + rule DisassemblerRegisterToSemanticsRegister(REG_XMM31, _) => %xmm31 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM0, _) => %ymm0 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM1, _) => %ymm1 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM2, _) => %ymm2 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM3, _) => %ymm3 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM4, _) => %ymm4 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM5, _) => %ymm5 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM6, _) => %ymm6 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM7, _) => %ymm7 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM8, _) => %ymm8 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM9, _) => %ymm9 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM10, _) => %ymm10 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM11, _) => %ymm11 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM12, _) => %ymm12 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM13, _) => %ymm13 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM14, _) => %ymm14 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM15, _) => %ymm15 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM16, _) => %ymm16 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM17, _) => %ymm17 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM18, _) => %ymm18 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM19, _) => %ymm19 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM20, _) => %ymm20 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM21, _) => %ymm21 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM22, _) => %ymm22 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM23, _) => %ymm23 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM24, _) => %ymm24 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM25, _) => %ymm25 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM26, _) => %ymm26 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM27, _) => %ymm27 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM28, _) => %ymm28 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM29, _) => %ymm29 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM30, _) => %ymm30 + rule DisassemblerRegisterToSemanticsRegister(REG_YMM31, _) => %ymm31 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM0, _) => %zmm0 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM1, _) => %zmm1 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM2, _) => %zmm2 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM3, _) => %zmm3 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM4, _) => %zmm4 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM5, _) => %zmm5 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM6, _) => %zmm6 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM7, _) => %zmm7 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM8, _) => %zmm8 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM9, _) => %zmm9 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM10, _) => %zmm10 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM11, _) => %zmm11 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM12, _) => %zmm12 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM13, _) => %zmm13 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM14, _) => %zmm14 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM15, _) => %zmm15 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM16, _) => %zmm16 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM17, _) => %zmm17 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM18, _) => %zmm18 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM19, _) => %zmm19 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM20, _) => %zmm20 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM21, _) => %zmm21 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM22, _) => %zmm22 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM23, _) => %zmm23 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM24, _) => %zmm24 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM25, _) => %zmm25 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM26, _) => %zmm26 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM27, _) => %zmm27 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM28, _) => %zmm28 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM29, _) => %zmm29 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM30, _) => %zmm30 + rule DisassemblerRegisterToSemanticsRegister(REG_ZMM31, _) => %zmm31 + + +endmodule