ARM 彙編語言

1. 什麼是彙編語言?

計算機處理器,執行的是 二進制的 10101010001,這些機器碼對應的助記符就是彙編指令。

處理器 fetch 到的指令是 1001010101, 可能就是 對應彙編語言中 ADD 的加法指令, 處理器執行 加法操作,並把結果輸出到目的寄存器。

ARM (RISC)指令長度固定爲 32 bits。

2. ARM 指令集

ARM 指令集可以分爲下面六類:

3. 常見 ARM 彙編指令定義:

3.1 MOV 數據傳送指令

MOV<cc> <S> Rd, <op1>

Rd 是目的寄存器,<op1> 是操作數。


注意 MOV 指令,op2 如果是 立即數,立即數必須小於 65535(0xFFFF),所以如果給 int i = 0x11111111;ARM 彙編對應的是以下兩條指令:

S:0x80002040 : MOV      r1,#0x1111
S:0x80002044 : MOVT     r1,#0x1111


[ARM 官方文檔庫] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cjagdjbf.html

3.2 ADD:

3.3 LDM:

3.4 加載寄存器指令 LDR:

在 ARM 中,word 長度是 32 bits, half word 是 16 bits, Byte 是 8 bits.

 

3.5 數據傳送指令 MOV:

3.6 Store 多個 Register 指令 STM:

3.7 Store Register 指令 STR:

 

4.  Offset Addressing & Pre-Index Addressing & Post-Index Addressing

4.1 Offset Addressing:

Offset Addressing 指令例子: LDR R0, [R1, #4] 這種尋址方式,不會改變 Base 寄存器 R1 的值。(只尋址,不改 Base 寄存器)

4.2 Pre-Index Addressing

Pre-Index Addressing 指令例子: LDR R0, [R1, #4]! 這種尋址方式,會改變 Base 寄存器 R1 的值。

先將尋址的內容加載到 R0 寄存器,再將尋址的地址回寫到 Base 寄存器 R1。(先尋址,後改 Base 寄存器)

4.3 Post-Index Addressing

Post-Index Addressing 指令例子: LDR R0, [R1], #4 這種尋址方式,會改變 Base 寄存器 R1 的值。

先將 Base 寄存器 R1內容加載到 R0 寄存器,再將尋址的地址回寫到 Base 寄存器 R1,(先讀 Base 寄存器,後改 Base 寄存器)

[] 內存尋址

5. ARM 指令總結:


 

參考文獻:

ARM_AssyLang.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章