当对x86-64进行指令cmpw %ax -5
编码时,从英特尔指令集参考手册中选择两个操作码:
3D iw CMP AX, imm16 I Valid Valid Compare imm16 with AX.
83 /7 ib CMP r/m16, imm8 MI Valid Valid Compare imm8 with r/m16.
因此,将会有两个编码结果:
66 3d fb ff ; this for opcode 3d
66 83 f8 fb ; this for opcode 83
那么哪一个更好呢?
我尝试了以下一些在线反汇编器:
这两者都能将指令反汇编回原始代码。但为什么6683fb00
可以工作,而663dfb
不行呢?