在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            arm中CPSR,SPSR功能與訪問

            作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
              CPSR:程序狀態(tài)寄存器(current program status register) ,cpsr在用戶級編程時(shí)用于存儲條件碼。CPSR包含條件碼標(biāo)志,中斷禁止位,當(dāng)前處理器模式以及其他狀態(tài)和控制信息。

              SPSR:程序狀態(tài)保存寄存器。SPSR用于保存CPSR的狀態(tài),以便異常返回后恢復(fù)異常發(fā)生時(shí)的工作狀態(tài)。

            本文引用地址:http://www.biyoush.com/article/201611/320501.htm

            CPSR(當(dāng)前程序狀態(tài)寄存器)在任何處理器模式下被訪問。它包含了條件標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志以及其他的一些控制和狀態(tài)位。每一種處理器模式下都有一個(gè)專用的物理狀態(tài)寄存器,稱為SPSR(備份程序狀態(tài)寄存器)。當(dāng)特定的異常中斷發(fā)生時(shí),這個(gè)寄存器用于存放當(dāng)前程序狀態(tài)寄存器的內(nèi)容。在異常中斷退出時(shí),可以用SPSR來恢復(fù)CPSR。由于用戶模式和系統(tǒng)模式不是異常中斷模式,所以他沒有SPSR。當(dāng)用戶在用戶模式或系統(tǒng)模式訪問SPSR,將產(chǎn)生不可預(yù)知的后果。

            CPSR格式如下所示。SPSR和CPSR格式相同。

            31 30 29 28 27 26 7 6 5 4 3 2 1 0

            N Z C V Q DNM(RAZ) I F T M4 M3 M2 M1 M0

            ***條件標(biāo)志位***

            N——本位設(shè)置成當(dāng)前指令運(yùn)算結(jié)果的bit[31]的值。當(dāng)兩個(gè)表示的有符號整數(shù)運(yùn)算時(shí),n=1表示運(yùn)算結(jié)果為負(fù)數(shù),n=0表示結(jié)果為正書或零。

            z——z=1表示運(yùn)算的結(jié)果為零;z=0表示運(yùn)算的結(jié)果不為零。對于CMP指令,Z=1表示進(jìn)行比較的兩個(gè)數(shù)大小相等。

            C——下面分四種情況討論C的設(shè)置方法:

            在加法指令中(包括比較指令CMP),當(dāng)結(jié)果產(chǎn)生了進(jìn)位,則C=1,表示無符號運(yùn)算發(fā)生上溢出;其他情況C=0。

            在減法指令中(包括減法指令CMP),當(dāng)運(yùn)算中發(fā)生錯(cuò)位,則C=0,表示無符號運(yùn)算數(shù)發(fā)生下溢出;其他情況下C=1。

            對于包含移位操作的非加減運(yùn)算指令,C中包含最后一次溢出的的位的數(shù)值。對于其他非加減運(yùn)算指令,C位的值通常不受影響。

            V——對于加減運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為二進(jìn)制的補(bǔ)碼表示的帶符號數(shù)時(shí),V=1表示符號為溢出;通常其他指令不影響V位。

            ***Q標(biāo)識位***

            在ARM V5的E系列處理器中,CPSR的bit[27]稱為q標(biāo)識位,主要用于指示增強(qiáng)的dsp指令是否發(fā)生了溢出。同樣的spsr的bit[27]位也稱為q標(biāo)識位,用于在異常中斷發(fā)生時(shí)保存和恢復(fù)CPSR中的Q標(biāo)識位。

            在ARM V5以前的版本及ARM V5的非E系列的處理器中,Q標(biāo)識位沒有被定義。

            ***CPSR中的控制位***

            CPSR的低八位I、F、T、M[4:0]統(tǒng)稱為控制位。當(dāng)異常中斷發(fā)生時(shí)這些位發(fā)生變化。在特權(quán)級的處理器模式下,軟件可以修改這些控制位。

            **中斷禁止位:當(dāng)I=1時(shí)禁止IRQ中斷,當(dāng)F=1時(shí)禁止FIQ中斷

            **T控制位:T控制位用于控制指令執(zhí)行的狀態(tài),即說明本指令是ARM指令還是Thumb指令。對于ARM V4以更高版本的T系列ARM處理器,T控制位含義如下:

            T=0表示執(zhí)行ARM指令

            T=1表示執(zhí)行Thumb指令

            對于ARM V5以及更高版本的非T系列處理器,T控制位的含義如下

            T=0表示執(zhí)行ARM指令

            T=1表示強(qiáng)制下一條執(zhí)行的指令產(chǎn)生未定指令中斷

            ***M控制位***

            M控制位控制處理器模式,具體含義如下:

            M[4:0] 處理器模式 可訪問的寄存器

            ob10000 user pc,r14~r0,CPSR

            0b10001 FIQ PC,R14_FIQ-R8_FIQ,R7~R0,CPSR,SPSR_FIQ

            0b10010 IRQ PC,R14_IRQ-R13_IRQ,R12~R0,CPSR,SPSR_IRQ

            0B10011 SUPERVISOR PC,R14_SVC-R13_SVC,R12~R0,CPSR,SPSR_SVC

            0b10111 ABORT PC,R14_ABT-R13_ABT,R12~R0,CPSR,SPSR_ABT

            0b11011 UNDEFINEED PC,R14_UND-R8_UND,R12~R0,CPSR,SPSR_UND

            0b11111 SYSTEM PC,R14-R0,CPSR(ARM V4以及更高版本)

            ***CPSR中的其他位***

            這些位用于將來擴(kuò)展。應(yīng)用軟件不要操作這些位。

            -------------------------------------------------------------------

            (CPSR,SPSR)訪問指令

            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)寄存器(CPSR 或SPSR)

            MRS 指令用于將程序狀態(tài)寄存器的內(nèi)容傳送到通用寄存器中。該指令一般用在以下幾種情況:

            - 當(dāng)需要改變程序狀態(tài)寄存器的內(nèi)容時(shí),可用MRS 將程序狀態(tài)寄存器的內(nèi)容讀入通用寄存器,修改后再寫回程序狀態(tài)寄存器。

            -當(dāng)在異常處理或進(jìn)程切換時(shí),需要保存程序狀態(tài)寄存器的值,可先用該指令讀出程序狀態(tài)寄存器的值,然后保存。

            指令示例:

            MRS R0,CPSR ;傳送CPSR 的內(nèi)容到R0

            MRS R0,SPSR ;傳送SPSR 的內(nèi)容到R0

            2、 MSR 指令

            MSR 指令的格式為:MSR{條件} 程序狀態(tài)寄存器(CPSR 或SPSR)_<域>,操作數(shù)

            MSR 指令用于將操作數(shù)的內(nèi)容傳送到程序狀態(tài)寄存器的特定域中。其中,操作數(shù)可以為通用寄存器或立即數(shù)。<域>用于設(shè)置程序狀態(tài)寄存器中需要操作的位,32 位的程序狀態(tài)寄存器可分為4 個(gè)域:

            位[31:24]為條件標(biāo)志位域,用f 表示;

            位[23:16]為狀態(tài)位域,用s 表示;

            位[15:8]為擴(kuò)展位域,用x 表示;

            位[7:0]為控制位域,用c 表示;

            該指令通常用于恢復(fù)或改變程序狀態(tài)寄存器的內(nèi)容,在使用時(shí),一般要在MSR 指令中指明將要操作的域。

            指令示例:

            MSR CPSR,R0 ;傳送R0 的內(nèi)容到CPSR

            MSR SPSR,R0 ;傳送R0 的內(nèi)容到SPSR

            MSR CPSR_c,R0 ;傳送R0 的內(nèi)容到SPSR,但僅僅修改CPSR 中的控制位域

            1 狀態(tài)寄存器傳送至通用寄存器類指令

            功能:將狀態(tài)寄存器的內(nèi)容傳送至通用寄存器。

            格式:

            MRS{<條件碼>}Rd,CPSR}SPSR

            其中:

            Rd 目標(biāo)寄存器,Rd不允許R15。

            R=0 將CPSR中的內(nèi)容傳送目的寄存器。

            R=1 將SPSR中的內(nèi)容傳送至目的寄存器。

            注釋:

            MRS與MSR配合使用,作為更新PSR的讀-修改-寫序列的一部分。例如:改變處理器或清除標(biāo)志Q。注意:當(dāng)處理器在用戶模式或系統(tǒng)模式下,一定不能試圖訪問SPSR這條指令,不影響條件碼標(biāo)志。

            例:

            MRS R0,CRSR ;將CPSR中的內(nèi)容傳送至R0

            MRS R3,SPSR ;將SPSR中的內(nèi)容傳送至R3

            2 .通用寄存器傳送至狀態(tài)寄存器傳送指令

            功能:將通用寄存器的內(nèi)容傳送至狀態(tài)寄存器.

            格式:

            MSR{<條件碼>CPSR_f|SPSR_f,<#ommed_8r>

            MSR{<條件碼>CPSR_|SPSR_,Rm

            其中:

            字段可以是以下之一或多種:

            C:控制域屏蔽字段(PSR中的第0位到第7位);

            X:擴(kuò)展域屏蔽字段(PSR中的第8位到第15位);

            S:狀態(tài)域屏蔽字段(PSR中的第16位到第32位);

            F:標(biāo)志域屏蔽字段(PSR中的第24位到第31位)。

            immed_8r 值數(shù)字常量的表達(dá)式。常量必須對應(yīng)8位位圖。該位圖在32位字中循環(huán)移位偶數(shù)數(shù)位。

            Rm 源寄存器。

            注釋:

            同前一條指令(MRS)。

            例1:設(shè)置N、Z、C、V標(biāo)志。

            MSR CPSR_f,#&f0000000 ;僅高位有效,其他必須為0

            例2:

            僅置位C標(biāo)志,保留N、Z、V標(biāo)志。

            MRS R0,CPSR ;將CPSR中的內(nèi)容傳送至R0

            ORR R0,R0,#&1f ;置位R0的第29位

            MSR CPSR_c,R0 ;再將R0中的內(nèi)容傳送至CPSR



            關(guān)鍵詞: armCPSRSPS

            評論


            技術(shù)專區(qū)

            關(guān)閉