在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 協(xié)處理器及其他指令之:狀態(tài)寄存器訪問指令

            協(xié)處理器及其他指令之:狀態(tài)寄存器訪問指令

            作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

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

            9.2

            指令集提供了兩條指令,可直接控制程序狀態(tài)寄存器psr。MRS指令用于把cpsr或者spsr的值傳送到一個寄存器;MSR與之相反,它將一個寄存器的內(nèi)容傳送到cpsr或者spsr。這兩條指令結(jié)合,可用于對cpsr和spsr進(jìn)行讀/寫操作。

            表9.2總結(jié)了。

            表9.2

            助記符

            含義

            操作

            MRS

            將程序狀態(tài)字寄存器的值送到通用寄存器

            Rd=spr

            MSR

            將通用寄存器的值送到程序狀態(tài)字寄存器

            Psr[field]=Rm

            MSR

            將一個立即數(shù)送到程序狀態(tài)字

            Psr[field]=immediate

            當(dāng)需要保存或修改當(dāng)前模式下CISR或SPSR的內(nèi)容時,首先必須將這些內(nèi)容傳送到通用寄存器中,對選擇的位進(jìn)行修改,然后將數(shù)據(jù)回寫到狀態(tài)寄存器。對于和Thumb的狀態(tài)切換也是如此,程序不能通過直接改寫CPSR中的T控制位直接將程序狀態(tài)切換到Thumb狀態(tài),必須通過BX等指令完成程序狀態(tài)的切換。

            9.2.1程序狀態(tài)字內(nèi)容送通用寄存器指令MRS

            1.指令編碼格式

            讀狀態(tài)寄存器指令MRS。在寄存器中,只有MRS指令可以將狀態(tài)寄存器CPSR或SPSR讀出到通用寄存器中。將程序狀態(tài)字內(nèi)容讀取到通用寄存器中后就可以對其進(jìn)行計算、修改等操作。

            指令的編碼格式如圖9.6所示。

            圖9.6MRS指令編碼格式

            2.指令的語法格式

            MRS{cond>}Rd>,CPSR

            MRS{cond>}Rd>,SPSR

            ①cond>

            為指令編碼中的條件域。它指示指令在什么條件下執(zhí)行。當(dāng)cond>忽略時,指令為無條件執(zhí)行(cond=AL(Alway))。

            ②Rd>

            確定指令的目標(biāo)寄存器。如果r15被用作目標(biāo)寄存器,指令的執(zhí)行結(jié)果不可預(yù)知。

            3.指令操作的偽代碼

            指令操作的偽代碼如下面程序段所示。

            IfConditionPassed{cond}then

            IfR==1then

            Rd=SPSR

            Else

            Rd=CPSR

            4.指令的使用

            MRS指令注意用于以下3種場合:

            ·當(dāng)需要保存或修改當(dāng)前模式下CPSR或SPSR的內(nèi)容時,首先必須將這些內(nèi)容傳送到通用寄存器中,對選擇的位進(jìn)行修改,然后將數(shù)據(jù)回寫到狀態(tài)寄存器。

            ·當(dāng)異常中斷允許嵌套時,需要在進(jìn)入異常中斷之后,嵌套中斷發(fā)生之前保存當(dāng)前處理器模式對應(yīng)的SPSR。這時需要先通過MRS指令讀出SPSR的值,再用其他指令(如壓棧指令)將SPSR值保存起來。

            ·在進(jìn)程切換時也需要保存當(dāng)前狀態(tài)寄存器的值。

            注意

            在用戶模式下對CPSR[23∶0]進(jìn)行任何修改都是無效的。另外,盡量避免在用戶模式或系統(tǒng)模式下訪問SPSR,因為在這種模式下沒有SPSR,如果執(zhí)行此操作,指令的執(zhí)行結(jié)果不可預(yù)知。

            5.指令舉例

            (1)將CPSR狀態(tài)寄存器讀取,保存到r1中。

            MRSr1,CPSR

            (2)將SPSR狀態(tài)寄存器讀取,保存到r2中。

            MRSr2,SPSR

            (3)MSR指令讀取CPSR,用來判斷ALU的狀態(tài)標(biāo)志或IRQ/FIQ中斷是否允許等;在異常處理程序中,讀SPSR可知道進(jìn)入異常前的處理器狀態(tài)等。MRS與MSR配合使用,實現(xiàn)CPSR或SPSR寄存器的讀-修改-寫操作,可用來進(jìn)行處理器模式的切換或禁止/使能IRQ/FIQ中斷等設(shè)置。另外,進(jìn)行切換或允許異常中斷嵌套時,也需要使用MRS指令讀取SPSR狀態(tài)值保存起來。

            下面的例子使能IRQ中斷。

            ENABLE_IRQ

            MRSr0,CPSR

            BICr0,r0,#0x80

            MSRCPSR_c,r0

            MOVPC,LR

            下面的例子禁止IRQ中斷。

            DISABLE_IRQ

            MRSr0,CPSR

            ORRr0,r0,#0x80

            MSRCPSR_c,r0

            MOVPC,LR


            上一頁 1 2 3 下一頁

            評論


            相關(guān)推薦

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

            關(guān)閉