我对使用间接操作数的“xxxx PTR”的规则感到困惑。 有人能说清楚吗? 感谢
答案 0 :(得分:1)
也许你会引用这种助记符语法(例如objdump -Mintel
):
add DWORD PTR [eax],0x5
这里的要点是[eax]
只是内存中的一个位置,但它不带有 size 信息。所以我们不知道是否要在一个字节,一个单词,一个双字或一个qword中加5。很明显,如果我们使用带注释的操作码名称(addb
,addw
,addl
,addq
),但这种特定的assember方言选择注释内存操作数。在这种情况下,它说,“处理eax
是一个指向dword的指针”。
相比之下,寄存器操作数不需要这样的注释,因为寄存器名称意味着它的大小:
add al,0x5 ; addb
add ax,0x5 ; addw
add eax,0x5 ; addl
add rax,0x5 ; addq