Hri*_*ali 3 x86 instruction-set prefixes opcode
在我为特定于 x86 arch 的 Linux 编写一个小型反汇编程序的过程中,我遇到了一个小问题。这是关于强制前缀和重复前缀的。查看英特尔文档 [1],据说重复前缀是0xf2或0xf3,强制前缀是0x66、0xf2或0xf3。
有两条指令具有以下基本操作码:
crc32 -- f2 0f 38 f0 (这里,0xf2是强制前缀)
movbe -- 0f 38 f0
因此,只要计数器寄存器非零就必须重复的“movbe”指令的操作码应该是:
代表 movbe == f2 0f 38 f0
当我开始反汇编一条指令时,如果我看到字节0xf2,我如何知道它是crc32指令的强制前缀,而不是movbe指令的重复前缀,反之亦然?我应该将操作码模式“f2 0f 38 f0”与哪条指令相匹配?
我缺少什么?
[1] http://www.intel.com/design/intarch/manuals/243191.HTM
感谢和问候,
Hrishikesh Murali