在我为Linux x86-32位平台编译反汇编程序的冒险中,遇到了一个问题。我看到下面的操作码序列,当我拆开使用“objdump的”一个简单的ELF-32可执行:拆解'faddl'指令
> dc 82 04 08 0d 00 faddl 0xd0804(%edx)
但是,当我看英特尔手册[1],我没有看到一个操作码correspoding了这一点。 'fadd'指令以0xdc开始,但它需要'm64fp'操作数,即“内存中的内存四字操作数”。现在,这是否意味着操作数是一个64位地址(这意味着fadd指令是一个64位指令,但没有以rex字节为前缀),还是只是指向一个32位地址四字(64位)?
我在这里错过了一些微不足道的东西,还是我对编码x86指令的理解错误?
[1] http://www.intel.com/design/intarch/manuals/243191.HTM
感谢和问候,
Hrishikesh穆拉利
对不起,但我还没有看过很长一段时间。现在就做。 –
请注意,英特尔手册使用英特尔标记,而Linux使用AT&T标记,因此您将无法直接在英特尔手册中查找Linux操作码。 –