[英]Do memory addresses have a different types from an integer type in ATT assembly language?
我知道 ATT 匯編語言有整數類型(字、雙字、四字)和浮點類型(單精度、雙精度)。
內存地址是整數類型還是它自己的類型?
我看到直接指定了內存地址,而使用前綴$
指定了整數常量。 那是因為整數和內存地址有不同的類型嗎?
在 AT&T 語法中,不同的操作數由不同的語法表示:
%eax register operand
(%eax) indirect operand
foo direct operand
$foo immediate operand
foo(%eax) indexed operand
foo(%eax,%ebx,4) scale, index, base operand
所以foo
和$foo
之間的區別在於,前者指的是地址foo
處的內存,而后者指的是foo
的地址。 例如,兩者之間的區別
mov 0x1234, %eax
和
mov $0x1234, %eax
是前者將地址0x1234
處的值加載到%eax
而后者加載值0x1234
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.