GNU匯編常用語法


GNU匯編常用語法

  匯編源程序一般用於系統最基本的初始化:初始化堆棧指針設置頁表操作ARM的協處理器等。這些初始化工作完成后就可以跳轉到C代碼main函數中執行。

  GNU 匯編語法適用於所有的架構,例如ARM。GNU 匯編由一系列的語句組成,每行一條語句,每條語句有三個可選部分,如下:

label: instruction @comment
  • label 即標號,表示地址位置,有些指令前面可能會有標號,這樣就可以通過這個標號得到指令的地址,標號也可以用來表示數據地址。注意 :label 后面的":",任何以":"結尾的標識符都會被識別為一個標號。
  • instruction 即指令,也就是匯編指令或偽指令。
  • @符號,表示后面的是注釋,就跟 C 語言里面的"/*"和"*/"一樣,其實在 GNU 匯編文件中我們也可以使用"/*"和"*/"來注釋。
  • comment 就是注釋內容。
  比如如下代碼:
add:
MOVS R0, #0X12 @設置 R0=0X12
  上面代碼中"add:"就是標號,"MOVS R0,#0X12"就是指令,最后的"@設置 R0=0X12"就是注釋。
  然而"#"又是什么意思呢,這種符號又稱為"指令中的操作數符號",可總結如下:
  • 立即數符號"#"

  "#"符號表示立即數,該符號后的數據可以是二進制數,也可以是十進制數或者十六進制數據,如果操作數為十進制數據,則前面除了"#"外,沒有其他符號。

  • 二進制數符號"%" (或者"2_",有的地方這么用)

  "%"符號后面的數字為二進制數,如%10010101表示二進制數10010101,即十進制數149。

  • 十六進制數符號"0x"

  "0x"符號表示后面的數據為十六進制數,如0xFFFF表示十六進制數FFFF,即十進制樹65535。

  注意!ARM 中的指令、偽指令、偽操作、寄存器名等可以全部使用大寫,也可以全部使用小寫,但是不能大小寫混用。

  

 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM