2.4.4 程序狀態(tài)寄存器訪問指令 ARM微處理器支持程序狀態(tài)寄存器訪問指令,用于在程序狀態(tài)寄存器和通用寄存器之間傳送數(shù)據(jù),程序狀態(tài)寄存器訪問指令包括以下兩條。 MRS:程序狀態(tài)寄存器到通用寄存器的數(shù)據(jù)傳送指令。 MSR:通用寄存器到程序狀態(tài)寄存器的數(shù)據(jù)傳送指令。 1. MRS指令 MRS指令的格式為:
MRS指令用于將程序狀態(tài)寄存器的內(nèi)容傳送到通用寄存器中。該指令一般用在以下幾種情況: 當(dāng)需要改變程序狀態(tài)寄存器的內(nèi)容時,可用MRS將程序狀態(tài)寄存器的內(nèi)容讀入通用寄存器,修改后再寫回程序狀態(tài)寄存器。 當(dāng)在異常處理或進(jìn)程切換時,需要保存程序狀態(tài)寄存器的值,可先用該指令讀出程序狀態(tài)寄存器的值,然后保存。 指令示例:
2. MSR指令 MSR指令的格式為:
MSR指令用于將操作數(shù)的內(nèi)容傳送到程序狀態(tài)寄存器的特定域中。其中,操作數(shù)可以為通用寄存器或立即數(shù)。<域>用于設(shè)置程序狀態(tài)寄存器中需要操作的位,32位的程序狀態(tài)寄存器可分為以下4個域。 位[31:24]為條件標(biāo)志位域,用f表示。 位[23:16]為狀態(tài)位域,用s表示。 位[15:8]為擴(kuò)展位域,用x表示.。 位[7:0]為控制位域,用c表示。 該指令通常用于恢復(fù)或改變程序狀態(tài)寄存器的內(nèi)容,在使用時,一般要在MSR指令中指明將要操作的域。 指令示例:
|
|