我对使用带有间接操作数的“xxxx PTR”的规则有点困惑。有人可以说清楚吗?谢谢
问问题
243 次
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 回答