Cortex-M3内核的指令系统
生活随笔
收集整理的這篇文章主要介紹了
Cortex-M3内核的指令系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1 Cortex-M3內核的指令系統
- 1.1 指令系統簡介
- 1.2 數據傳送指令
- 1.3 中斷開關指令
- 1.4 條件跳轉指令
- 1.5 運算指令
1 Cortex-M3內核的指令系統
1.1 指令系統簡介
指令系統簡介:
- Cortex-M3使用的是Thumb-2指令集,長度可為16位或者32位。指令可以帶后綴,如有條件的執行。示例:CBZ R0, label,如果R0為0,則跳轉;否則什么都不做。
典型寫法:
指令分類:
- 數據傳送指令。
- 數據處理指令。
- 子程序調用及無條件跳轉指令。
- 標志位與條件轉移指令。
- 飽和運算指令。
- 其它指令。
1.2 數據傳送指令
存儲器訪問:
- LDR/LDRB Rd, =LABEL,加載符合LABEL對應的地址,存儲到Rd中。
- LDR/LDRB Rd, [Rs],從Rs寄存器取出地址,讀取相應的32位/8位數據,存儲到Rd寄存器。
- STR/STRB Rd, [Rs],從Rs寄存器中取出地址,將Rd中的32位/8位數據存儲到相應的地址處。
批量存儲器訪問:
- LDMIA, Rd!, {Rn, ... , Rm},從Rd處連續多次遞增地址讀取32位數據,存儲到后面指令的寄存器列表。
- STMDB, Rd!, {Rn, ... , Rm},從Rd處連續多次遞減地址存儲32位數據,數據來自后面的寄存器列表。
IA(Increase After)表示在操作完成后遞增地址;DB(Decrease Before)表示在操作開始前遞減地址。
!操作結束后,將最終的地址保存到Rd寄存器中。
MRS和MSR:
MRS和MSR用于訪問xPSR、PSP、MSP等:
- MRS Rn, <SReg>,加載寄存器的值到Rn。
- MSR <SReg>, Rn:存儲Rn的值到寄存器中。
1.3 中斷開關指令
中斷開關:
- CPSID I:關中斷。
- CPSIE I:開中斷。
1.4 條件跳轉指令
無條件跳轉:
- BX Rn:移到寄存器reg給出的地址,比如BX LR可用于子程序的返回。
比較條件并跳轉:
- CBZ Rn, <label>:如果Rn的寄存器不為0,則跳轉到label對應的指令,否則執行下一條指令。
- CBNZ Rn, <label>:如果Rn寄存器值不為0,則跳轉到label對應的指令,否則執行下一條指令。
1.5 運算指令
邏輯或操作:
- ORR Rd, Rn, #imm12:Rd = Rn | imm12。
參考資料:
總結
以上是生活随笔為你收集整理的Cortex-M3内核的指令系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑变成蓝屏怎么办啊 电脑突然蓝屏怎么办
- 下一篇: 任务切换的基础:模拟任务切换时寄存器的保