什么时候我应该使用PTR与间接操作数?

时间:2013-07-16 13:40:03

标签: assembly x86 masm pointers

我对使用间接操作数的“xxxx PTR”的规则感到困惑。 有人能说清楚吗? 感谢

1 个答案:

答案 0 :(得分:1)

也许你会引用这种助记符语法(例如objdump -Mintel):

add DWORD PTR [eax],0x5

这里的要点是[eax]只是内存中的一个位置,但它不带有 size 信息。所以我们不知道是否要在一个字节,一个单词,一个双字或一个qword中加5。很明显,如果我们使用带注释的操作码名称(addbaddwaddladdq),但这种特定的assember方言选择注释内存操作数。在这种情况下,它说,“处理eax是一个指向dword的指针”。

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

add  al,0x5    ; addb
add  ax,0x5    ; addw
add eax,0x5    ; addl
add rax,0x5    ; addq