簡體   English   中英

內存地址的類型是否與 ATT 匯編語言中的整數類型不同?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM