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