1. 程式人生 > >MSR和MRS指令操作CPSR寄存器

MSR和MRS指令操作CPSR寄存器

數據 style src 實現 strong mage idt 技術 器)

1.MSR和MRS指令介紹

MRS 指令: 對狀態寄存器CPSR和SPSR進行讀操作。通過讀CPSR可以獲得當前處理器的工作狀態。讀SPSR寄存器可以獲得進入異常前的處理器狀態(因為只有異常模式下有SPSR寄存器)。

MSR指令: 對狀態寄存器CPSR和SPSR進行寫操作。與MRS配合使用,可以實現對CPSR或SPSR寄存器的讀-修改-寫操作,可以切換處理器模式、或者允許/禁止IRQ/FIQ中斷等。

2.CPSR寄存器介紹

如圖所示,ARM每種工作模式除R0~R15共16個寄存器外,還有第17個寄存器CPSR,叫做 當前程序狀態寄存器

技術分享

CPSR寄存器格式:

技術分享

在CPSR寄存器中主要用到了控制位,每個標誌位如下圖所示:

技術分享

3.使用MSR指令寫入數據

例: msr cpsr_c, #0xd2 @0xd2=1100 0010 禁止中斷使能,進入中斷模式

msr cpsr_c, #0x53 @0x53=0101 0011 開IRQ中斷,進入管理模式

其中cpsr_c是因為CPSR有4個8位區域:

C 控制域屏蔽字節([7:0])

X 擴展域屏蔽字節([15:8])

   S 狀態域屏蔽字節([23:16])

F 標誌域屏蔽字節([31:24])

所以cpsr_c表示的是CPSR控制位、

MSR和MRS指令操作CPSR寄存器