.text # All the following should be illegal for x86-64 aaa # illegal aad # illegal aam # illegal aas # illegal arpl %ax,%ax # illegal bound %eax,(%rax) # illegal calll *%eax # 32-bit data size not allowed calll *(%ax) # 32-bit data size not allowed calll *(%eax) # 32-bit data size not allowed calll *(%r8) # 32-bit data size not allowed calll *(%rax) # 32-bit data size not allowed callq *(%ax) # no 16-bit addressing daa # illegal das # illegal enterl $0,$0 # can't have 32-bit stack operands into # illegal foo: jcxz foo # No prefix exists to select CX as a counter jmpl *%eax # 32-bit data size not allowed jmpl *(%ax) # 32-bit data size not allowed jmpl *(%eax) # 32-bit data size not allowed jmpl *(%r8) # 32-bit data size not allowed jmpl *(%rax) # 32-bit data size not allowed jmpq *(%ax) # no 16-bit addressing lcalll $0,$0 # illegal lcallq $0,$0 # illegal ldsl %eax,(%rax) # illegal ldsq %rax,(%rax) # illegal lesl %eax,(%rax) # illegal lesq %rax,(%rax) # illegal ljmpl $0,$0 # illegal ljmpq $0,$0 # illegal ljmpq *(%rax) # 64-bit data size not allowed loopw foo # No prefix exists to select CX as a counter loopew foo # No prefix exists to select CX as a counter loopnew foo # No prefix exists to select CX as a counter loopnzw foo # No prefix exists to select CX as a counter loopzw foo # No prefix exists to select CX as a counter leavel # can't have 32-bit stack operands pop %ds # illegal pop %es # illegal pop %ss # illegal popa # illegal popl %eax # can't have 32-bit stack operands push %cs # illegal push %ds # illegal push %es # illegal push %ss # illegal pusha # illegal pushl %eax # can't have 32-bit stack operands pushfl # can't have 32-bit stack operands popfl # can't have 32-bit stack operands retl # can't have 32-bit stack operands insertq $4,$2,%xmm2,%ebx # The last operand must be XMM register. fnstsw %eax fnstsw %al fstsw %eax fstsw %al in $8,%rax out %rax,$8 movzxl (%rax),%rax movnti %ax, (%rax) movntiw %ax, (%rax) .intel_syntax noprefix cmpxchg16b dword ptr [rax] # Must be oword movq xmm1, XMMWORD PTR [rsp] movq xmm1, DWORD PTR [rsp] movq xmm1, WORD PTR [rsp] movq xmm1, BYTE PTR [rsp] movq XMMWORD PTR [rsp],xmm1 movq DWORD PTR [rsp],xmm1 movq WORD PTR [rsp],xmm1 movq BYTE PTR [rsp],xmm1 fnstsw eax fnstsw al fstsw eax fstsw al in rax,8 out 8,rax movsx ax, [rax] movsx eax, [rax] movsx rax, [rax] movzx ax, [rax] movzx eax, [rax] movzx rax, [rax] movnti word ptr [rax], ax calld eax # 32-bit data size not allowed calld [ax] # 32-bit data size not allowed calld [eax] # 32-bit data size not allowed calld [r8] # 32-bit data size not allowed calld [rax] # 32-bit data size not allowed callq [ax] # no 16-bit addressing jmpd eax # 32-bit data size not allowed jmpd [ax] # 32-bit data size not allowed jmpd [eax] # 32-bit data size not allowed jmpd [r8] # 32-bit data size not allowed jmpd [rax] # 32-bit data size not allowed jmpq [ax] # no 16-bit addressing