處理器不同模式下寄存器
1.1.1ARM處理器不同模式下寄存器
CPU的模式不同,在其對(duì)應(yīng)模式下可以使用的寄存器也不相同,如表3-2所示:
本文引用地址:http://butianyuan.cn/article/201611/317754.htm表3-2 ARM處理器模式下寄存器
寄存器類別 | 寄存器在匯編中的名稱 | 各模式下實(shí)際訪問的寄存器 | |||||||||||
用戶 | 系統(tǒng) | 管理 | 終止 | 未定義 | 中斷 | 快中斷 | |||||||
通用寄存器和程序計(jì)數(shù)器 | R0(a1) | R0 | |||||||||||
R1(a2) | R1 | ||||||||||||
R2(a3) | R2 | ||||||||||||
R3(a4) | R3 | ||||||||||||
R4(v1) | R4 | ||||||||||||
R5(v2) | R5 | ||||||||||||
R6(v3) | R6 | ||||||||||||
R7(v4) | R7 | ||||||||||||
R8(v5) | R8 | R8_fiq | |||||||||||
R9(SB,v6) | R9 | R9_fiq | |||||||||||
R10(SL,v7) | R10 | R10_fiq | |||||||||||
R11(FP,v8) | R11 | R11_fiq | |||||||||||
R12(IP) | R12 | R12_fiq | |||||||||||
R13(SP) | R13 | R13_svc | R13_abt | R13_und | R13_irq | R13_fiq | |||||||
R14(LR) | R14 | R14_svc | R14_abt | R14_und | R14_irq | R14_fiq | |||||||
R15(PC) | R15 | ||||||||||||
狀態(tài)寄存器 | CPSR | CPSR | |||||||||||
SPSR | 無 | SPSR_abt | SPSR_abt | SPSR_und | SPSR_irq | SPSR_fiq | |||||||
其中R0~R7在所有模式下都可以使用的共有寄存器,R8~R12是快速中斷模式下私有的寄存器,其它模式下不能使用,之所以叫其快速中斷,是因?yàn)榭焖僦袛嗄J较?,這幾個(gè)私有寄存器里數(shù)據(jù)在模式切換時(shí)可以不用入棧保存。
除了用戶模式和系統(tǒng)模式共用一組R13,R14,其余每種模式都私有自己的R13,R14,因?yàn)樵诿糠N模式下都有自己的棧空間用于執(zhí)行程序,在執(zhí)行程序過程中還要保存返回地址,這樣可以保證在進(jìn)入不同模式時(shí),當(dāng)前模式下棧空間不被破壞。比如:網(wǎng)卡因?yàn)閿?shù)據(jù)到達(dá),產(chǎn)生了中斷進(jìn)入中斷模式,在中斷模式下有自己的中斷處理例程(ISR),ISR在執(zhí)行時(shí)要用到??臻g,因此要使用R13,R14。中斷處理完成后,返回用戶模式下,要繼續(xù)執(zhí)行被網(wǎng)卡中斷信號(hào)中斷的執(zhí)行程序。
用戶模式和系統(tǒng)模式為什么要共用一組R13,R14呢?這是因?yàn)椋谔貦?quán)模式下可以自由切換工作模式,但是如果切換到用戶模式下,就不能再切換到特權(quán)模式了,這是CPU為操作系統(tǒng)提供的保護(hù)機(jī)制,但是有的時(shí)候就需要切換到用戶模式下去使用其R13,R14寄存器,比如當(dāng)操作系統(tǒng)的進(jìn)程進(jìn)行上下文切換時(shí),如果用戶模式和系統(tǒng)模式共用一組寄存器,那么可以切換到系統(tǒng)模式下(系統(tǒng)模式是特權(quán)模式)進(jìn)行操作。
所有R15和CPU同時(shí)只能處理一條指令,在取指時(shí),有一個(gè)CPSR表示當(dāng)前CPU的狀態(tài)即可。
評(píng)論