在我为 x86 平台上的 32 位 Linux 编写反汇编程序的冒险中,我遇到了一个问题。当我使用以下命令反汇编一个简单的 ELF-32 可执行文件时,我看到了以下操作码序列objdump
:
dc 82 04 08 0d 00 faddl 0xd0804(%edx)
但是当我查看英特尔手册时,我没有看到与此相对应的操作码。该fadd
指令以 0xDC 开头,但随后需要一个m64fp
操作数,即“内存中的内存四字操作数”。
现在,这是否意味着操作数是一个 64 位地址(这意味着该fadd
指令是一个 64 位指令,但没有以 REX 字节为前缀),或者它只是一个指向的 32 位地址到四字(64 位)?
我是否在这里遗漏了一些琐碎的事情,或者我对编码 x86 指令的理解是错误的?