[英]What does % mean on register names in assembly language?
我嘗試使用 GCC -S 選項將 C 語言代碼轉換並解釋為匯編語言。 push %rbp
和push rbp
有什么區別?
您給出的兩個語句都做同樣的事情,主要區別在於語法。
X86 有兩種主要的語法約定,Intel 約定和 AT&T 約定。
有關詳細信息,請參閱語法比較。
[UPD:]以防萬一,在此處復制語法信息:
美國電話電報公司 | 英特爾 | |
---|---|---|
參數順序 | 源在目的地之前。movl $5, %eax |
源之前的目的地。mov eax, 5 |
參數大小 | 助記符后綴有一個字母,表示操作數的大小: q表示 qword, l表示 long(dword), w表示 word, b表示 byte。addl $4, %esp |
派生自所使用的寄存器的名稱(例如rax 、 eax 、 ax 、 al分別暗示q 、 l 、 w 、 b )。add esp, 4 |
印記 | 以$ 為前綴的 立即值,以%為前綴的寄存器。 | 匯編器自動檢測符號的類型; 即,它們是寄存器、常量還是其他東西。 |
有效地址 | DISP(BASE,INDEX,SCALE) 的一般語法。movl mem_addr(%ebx,%ecx,4), %eax |
方括號中的算術表達式; 此外,如果無法從操作數確定大小,則必須使用大小關鍵字,如byte 、 word或dword 。mov eax, [ebx + ecx*4 + mem_addr] |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.