新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 協處理器及其他指令之:狀態寄存器訪問指令

        協處理器及其他指令之:狀態寄存器訪問指令

        作者: 時間:2013-09-13 來源:網絡 收藏

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

        9.2.2寫狀態寄存器指令MSR

        1.指令編碼格式

        寫狀態寄存器指令MSR(MovetoStatusRegisterfromRegister)。在處理器中,只有MSR指令可以直接設置狀態寄存器CPSR或SPSR。

        圖9.7、圖9.8分別顯示了源操作數為立即數的MSR指令和源操作數為寄存器的MSR指令的編碼格式。

        圖9.7源操作數為立即數的MSR指令編碼格式

        圖9.8源操作數為寄存器的MSR指令編碼格式

        2.指令的語法格式

        MSR{cond>}CPSR_fields>,#immediate>

        MSR{cond>}CPSR_fields>,Rm>

        MSR{cond>}SPSR_fields>,#immediate>

        MSR{cond>}SPSR_fields>,Rm>

        ①cond>

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

        ②fields>

        域標志位,是下面選項中的一種或幾種的組合。

        ·C:設置控制位掩碼域(bit[16])。

        ·X:設置擴展位掩碼域(bit[17])。

        ·S:設置狀態位掩碼域(bit[18])。

        ·F:設置標志位掩碼域(bit[19])

        ③immediate>

        將被傳送到CPSR和SPSR寄存器的立即數。此立即數可以為8位立即數(范圍在0x00~0xff之間)。

        ④Rm>

        指定的通用寄存器,此寄存器包含將要被傳送狀態寄存器中的數據。

        3.指令操作的偽代碼

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

        IfConditionPassed{cond}then

        Ifopcode[25]==1

        Operand=8_bit_immediateRotate_Right{rotate_imm*2}

        Else/*opcode[25]==0*/

        Operand=Rm

        IfR==0then

        Iffield_mask[0]==1andinAprivilegedMode()then

        CPSR[7:0]=operand[7:0]

        Iffield_mask[1]==1andinAprivilegedMode()then

        CPSR[15:8]=operand[15:8]

        Iffield_mask[2]==1andinAprivilegedMode()then

        CPSR[23:16]=operand[23:16]

        Iffield_mask[3]==1andthen

        CPSR[31:24]=operand[31:24]

        Else/*R==1*/

        Iffield_mask[0]==1andCurrentModeHasSPSR()then

        SPSR[7:0]=operand[7:0]

        Iffield_mask[1]==1andCurrentModeHasSPSR()then

        SPSR[15:8]=operand[15:8]

        Iffield_mask[2]==1andCurrentModeHasSPSR()then

        SPSR[23:16]=operand[23:16]

        Iffield_mask[3]==1andCurrentModeHasSPSR()then

        SPSR[31:24]=operand[31:24]



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 广元市| 新乐市| 崇信县| 忻城县| 双辽市| 波密县| 陈巴尔虎旗| 尼勒克县| 治多县| 宝清县| 江口县| 凤山市| 平塘县| 台中市| 浙江省| 诸暨市| 兰考县| 蒙山县| 雷波县| 咸宁市| 佛冈县| 建瓯市| 阿勒泰市| 霍邱县| 临漳县| 广南县| 平湖市| 连州市| 宣威市| 海安县| 宜阳县| 岗巴县| 鞍山市| 库尔勒市| 拉孜县| 岑巩县| 卢龙县| 外汇| 海宁市| 泸水县| 徐水县|