0

間接オペランドで「xxxx PTR」を使用する規則に少し混乱しています。誰でも明確にできますか?ありがとう

4

1 に答える 1

1

おそらく、次のニーモニック構文を参照しているでしょう (例: objdump -Mintel):

add DWORD PTR [eax],0x5

ここでのポイントは、これは単なるメモリ内の場所であり、サイズ情報[eax]を保持していないということです。したがって、バイト、ワード、dword、または qword のいずれに 5 を加算するかはわかりません。注釈付きのオペコード名 ( 、、、 )を使用した場合は明らかですが、アセンバーのこの特定の方言では、代わりにメモリ オペランドに注釈を付けています。この場合、「treatは dword へのポインタです」と表示されます。addbaddwaddladdqeax

対照的に、レジスタ名はそのサイズを暗示しているため、レジスタ オペランドにはそのような注釈は必要ありません。

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