0

我对使用带有间接操作数的“xxxx PTR”的规则有点困惑。有人可以说清楚吗?谢谢

4

1 回答 1

1

也许你参考了这个助记语法(例如objdump -Mintel):

add DWORD PTR [eax],0x5

这里的重点是它[eax]只是内存中的一个位置,但它不携带大小信息。所以我们不知道是给一个字节、一个字、一个双字还是一个四字加5。如果我们使用带注释的操作码名称(addb, addw, addl, addq)会很清楚,但是这种特殊的汇编语言选择来注释内存操作数。在这种情况下,它说,“treateax是一个指向 dword 的指针”。

相比之下,寄存器操作数不需要这样的注释,因为寄存器名称暗示了它的大小:

add  al,0x5    ; addb
add  ax,0x5    ; addw
add eax,0x5    ; addl
add rax,0x5    ; addq
于 2013-07-16T13:57:03.953 回答