1. 程式人生 > >ARM零碎知識點總結(儘可能零碎)

ARM零碎知識點總結(儘可能零碎)

1.ARM有六類指令集:

跳轉指令、資料處理指令、程式狀態暫存器傳輸指令、Load/Store指令、協處理器指令、異常中斷產生指令

2.ARM中實現程式跳轉的方式有兩種:

1.通過跳轉指令  

2.直接向PC暫存器(R15中寫入目標地址值

3. 資料處理指令又可分為3類:

資料傳送指令、算術邏輯運算指令、比較指令

部分指令的使用如下:

ANDAnd 邏輯與操作指令)可以提取暫存器中某些位的值,具體的做法是見杜春雷P69

ORRLogical OR邏輯或操作指令)可將暫存器中的某些位設定成1,詳見杜春雷P70

EORExclusive OR邏輯異或操作指令)可將進村器中某些位的值取反,詳見杜春雷

P71

BICBit Clear位清除指令)用於將暫存器中的某些位的值設定成0,詳見杜春雷P72

TSTTest位測試指令)用於測試暫存器中某個位是1還是0,詳見杜春雷P73

TEQTest Equivalence相等測試指令)用於比較兩個數或運算元是否相等,詳見杜春雷P74

4.程式不能通過直接修改CPSR中的T控制位直接將程式狀態切換到Thumb狀態,必須通過BX等指令完成程式狀態的切換

5.LDR指令的用法:

 a.可以用來從記憶體中讀取32位字資料到通用暫存器,然後對資料進行操作

 b.當PC作為指令中的目標暫存器時,指令可以實現程式跳轉的功能

現通過LDR的用法不難總結出

1)LDRB(Load Register Byte位元組資料處理指令)的用法如下:

 a.讀取8位位元組資料,然後對其操作(暫存器高24位清零)

 b.PC為目標暫存器時,實現程式跳轉

2)LDRH(Load Register Halfword半字資料讀取指令)的用法如下:

 a.讀取16位半位元組資料,然後對其操作(高16位清零)

 b.PC為目標暫存器時,實現程式跳轉     

6.arm組合語言中$ 是意思是什麼?

在一個符號前使用$,表示程式在彙編時將使用相應的值來代替$後的符號

7.巨集彙編技術與子程式:

使用子程式可以節省儲存空間及程式設計所花費的時間,也可以提供模組化的程式設計,使程式的除錯維護方便,但它也有缺點,例如,使用子程式時儲存和恢復相關的暫存器及子程式現場,增加了額外的開銷。因此在子程式較短而需要傳遞的引數較多的可以使用巨集彙編技術。