目錄
ARM寄存器組織(一)
寄存器
概念
作用
分類
ARM寄存器
ARM寄存器組織(二)
專用寄存器
R15(PC,Program Counter)
R14(LR,Link Register)
R13(SP,Stack Pointer)
ARM寄存器組織(三)
CPSR寄存器
ARM寄存器組織(一)
寄存器
概念
寄存器是處理器內(nèi)部的存儲(chǔ)器,沒有地址
C語言中register存儲(chǔ)在寄存器中,但無法進(jìn)行取地址&因?yàn)闆]有地址,只能修飾局部變量,因?yàn)榧拇嫫鞔鎯?chǔ)空間太少,不能長時(shí)間被占用
作用
一般用于暫時(shí)存放參與運(yùn)算的數(shù)據(jù)和運(yùn)算結(jié)果
分類
包括通用寄存器、專用寄存器、控制寄存器
ARM寄存器
不同的模式可以使用寄存器的權(quán)限不同
注 三角表示只能在某個(gè)特定模式下只能使用當(dāng)前模式下的寄存器,一個(gè)模式下特有的寄存器其他模式下不可使用
一共有40個(gè)寄存器
ARM寄存器組織(二)
專用寄存器
R15(PC,Program Counter)
程序計(jì)數(shù)器,用于存儲(chǔ)當(dāng)前取址指令的地址
R14(LR,Link Register)
鏈接寄存器,一般有以下兩種用途:
執(zhí)行跳轉(zhuǎn)指令(BL/BLX)時(shí),LR會(huì)自動(dòng)保存跳轉(zhuǎn)指令下一條指令的地址程序需要返回時(shí)將LR的值復(fù)制到PC即可實(shí)現(xiàn)
產(chǎn)生異常時(shí),對應(yīng)異常模式下的LR會(huì)自動(dòng)保存被異常打斷的指令的下一條指令的地址,異常處理結(jié)束后將LR的值復(fù)制到PC可實(shí)現(xiàn)程序返回
R13(SP,Stack Pointer)
棧指針,用于存儲(chǔ)當(dāng)前模式下的棧頂?shù)刂?/p>
ARM寄存器組織(三)
CPSR寄存器
CPSR(Current Program Status Register),當(dāng)前程序狀態(tài)寄存器
它主要在ARM架構(gòu)中使用,在執(zhí)行程序時(shí)需要頻繁讀取和修改CPSR來進(jìn)行條件判斷、模式切換和中斷處理等操作。
ARM是32位其中寄存器也都是32位
CPSR寄存器分為四個(gè)域,[31:24]為條件域用F表示、[23:16]為狀態(tài)域用S表示、[15:8]為預(yù)留域用X表示、[8:0]為控制域用C表示
Bit[4:0]
[10000]User [10001]FIQ [10010]IRQ [10011]SVC
[10111]Abort [11011]Undef [11111]System [10110]Monitor
Bit[5]
[0]ARM狀態(tài) [1]Thumb狀態(tài)
Bit[6]
[0]開啟FIQ [1]禁止FIQ
Bit[7]
[0]開啟IRQ [1]禁止IRQ
Bit[28]
當(dāng)運(yùn)算器中進(jìn)行加法運(yùn)算且產(chǎn)生符號(hào)位進(jìn)位時(shí)該位自動(dòng)置1,否則為0
當(dāng)運(yùn)算器中進(jìn)行減法運(yùn)算且產(chǎn)生符號(hào)位借位時(shí)該位自動(dòng)置0,否則為1
Bit[29]
當(dāng)運(yùn)算器中進(jìn)行加法運(yùn)算且產(chǎn)生進(jìn)位時(shí)該位自動(dòng)置1,否則為0
當(dāng)運(yùn)算器中進(jìn)行減法運(yùn)算且產(chǎn)生借位時(shí)該位自動(dòng)置0,否則為1
Bit[30]
當(dāng)運(yùn)算器中產(chǎn)生了0的結(jié)果該位自動(dòng)置1,否則為0
Bit[31]文章來源:http://www.zghlxwxcb.cn/news/detail-540381.html
當(dāng)運(yùn)算器中產(chǎn)生了負(fù)數(shù)的結(jié)果該位自動(dòng)置1,否則為0文章來源地址http://www.zghlxwxcb.cn/news/detail-540381.html
到了這里,關(guān)于12.3 ARM寄存器組織的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!