幾個重要的arm指令詳解

2021-09-28 16:20:00 字數 1314 閱讀 4874

ldr(load)

使用格式:ldr rd,[rbase] 或者偽 指令ldr rd,=value

載入位址rbase中的值到rd中;偽指令拆分為幾個真正的指令,載入value到 rd中

s***b(store many decrease before )

使用格式:s***b rn, 《暫存器列表》

多個資料預先增加儲存,暫存器按從最低到最高的編號次序與到從低端到高階的

記憶體之間傳送資料

ldmia(load many increase after)

使用格式:ldmia rn, 《暫存器列表》

多個資料過後減少載入,暫存器按從最低到最高的編號次序與到從低端到高階的記憶體之間傳送資料。用是否存在『!』來控制寫回操作,即pc執行完這條指令是否回到操作之前的位址值。^表示恢復 psr 位。

bl(branch witch link)帶鏈結的分支

使用格式:b 《位址》

和b指令的唯一區別是bl跳轉之前把下一條指令的位址存入到lr暫存器中,pc跳轉執行完後,lr暫存器的值賦值給pc,pc回到跳轉前把下一條指令的位址處

注意:str和ldr不能用於暫存器與暫存器之間的傳輸資料,暫存器與暫存器之間交換資料用mov

1. 子程式通過暫存器r0~r3來傳遞引數. 這時暫存器可以記作: a1~a4 , 被呼叫的子程式在返回前無需恢復暫存器r0~r3的內容.

2. 在子程式中,使用r4~r11來儲存區域性變數.這時暫存器r4~r11可以記作: v1~v8 .如果在子程式中使用到v1~v8的某些暫存器,子程式進入時必須儲存這些暫存器的值,在返回前必須恢復這些暫存器的值,對於子程式中沒有用到的暫存器則不必執行這些操作.在thumb程式中,通常只能使用暫存器r4~r7來儲存區域性變數.

3. 暫存器r12用作子程式間scratch暫存器,記作ip; 在子程式的連線**段中經常會有這種使用規則.

4. 暫存器r13用作資料棧指標,記做sp,在子程式中暫存器r13不能用做其他用途. 暫存器sp在進入子程式時的值和退出子程式時的值必須相等.

5. 暫存器r14用作連線暫存器,記作lr ; 它用於儲存子程式的返回位址,如果在子程式中儲存了返回位址,則r14可用作其它的用途.

6. 暫存器r15是程式計數器,記作pc ; 它不能用作其他用途.

7. atpcs中的各暫存器在arm編譯器和彙編器中都是預定義的.

ARM指令CMP詳解

1 加減指令 add r1,r2,1 r1 r2 1 sub r1,r2,1 r1 r2 1 2 adr指令 adr是小範圍的位址讀取偽指令,ldr是大範圍的讀取位址偽指令。可實際上adr是將基於pc相對偏移的位址值或基於暫存器相對位址值讀取的為指令,而ldr用於載入32為立即數或乙個位址到指定的暫...

ARM指令CMP詳解

arm指令cmp詳解 1 加減指令 add r1,r2,1 r1 r2 1 sub r1,r2,1 r1 r2 1 2 adr指令 adr是小範圍的位址讀取偽指令,ldr是大範圍的讀取位址偽指令。可實際上adr是將基於pc相對偏移的位址值或基於暫存器相對位址值讀取的為指令,而ldr用於載入32為立即...

ARM彙編指令詳解

基本設定 指令集工作模式 特權模式 privilege 特權模式 privilege除了system模式外,其他5種為異常模式 各種模式的切換,程式設計師通過 切換,cpsr暫存器 也可以cpu在某些情況下自動切換 中斷或者按復位鍵 注意 system模式使用user模式暫存器集 mode位 理論上...