簡體   English   中英

% 在匯編語言中的寄存器名稱上是什么意思?

[英]What does % mean on register names in assembly language?

我嘗試使用 GCC -S 選項將 C 語言代碼轉換並解釋為匯編語言。 push %rbppush rbp有什么區別?

您給出的兩個語句都做同樣的事情,主要區別在於語法。
X86 有兩種主要的語法約定,Intel 約定和 AT&T 約定。
有關詳細信息,請參閱語法比較

[UPD:]以防萬一,在此處復制語法信息:

美國電話電報公司 英特爾
參數順序 源在目的地之前。
movl $5, %eax
源之前的目的地。
mov eax, 5
參數大小 助記符后綴有一個字母,表示操作數的大小: q表示 qword, l表示 long(dword), w表示 word, b表示 byte。
addl $4, %esp
派生自所使用的寄存器的名稱(例如raxeaxaxal分別暗示qlwb )。
add esp, 4
印記 $ 為前綴的 立即值,以%為前綴的寄存器。 匯編器自動檢測符號的類型; 即,它們是寄存器、常量還是其他東西。
有效地址 DISP(BASE,INDEX,SCALE) 的一般語法。
movl mem_addr(%ebx,%ecx,4), %eax
方括號中的算術表達式; 此外,如果無法從操作數確定大小,則必須使用大小關鍵字,如byteworddword
mov eax, [ebx + ecx*4 + mem_addr]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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