新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 詳解ARM9的CPSR寄存器

        詳解ARM9的CPSR寄存器

        作者: 時間:2016-11-22 來源:網絡 收藏
        最近在學習嵌入式底層系統開發,在寫啟動代碼時要設置各個模式的SP,需要調整CPU的工作模式,部分代碼如下:
        [plain]view plaincopy
        print?
        1. .equDISABLE_IRQ,0x80
        2. .equDISABLE_FIQ,0x40
        3. .equSYS_MOD,0x1f
        4. .equIRQ_MOD,0x12
        5. .equFIQ_MOD,0x11
        6. .equSVC_MOD,0x13
        7. .equABT_MOD,0x17
        8. .equUND_MOD,0x1b
        9. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|SVC_MOD)
        10. ldrsp,=_SVC_STACK
        11. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|IRQ_MOD)
        12. ldrsp,=_IRQ_STACK
        13. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|FIQ_MOD)
        14. ldrsp,=_FIQ_STACK
        15. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|ABT_MOD)
        16. ldrsp,=_ABT_STACK
        17. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|UND_MOD)
        18. ldrsp,=_UND_STACK
        19. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|SYS_MOD)
        20. ldrsp,=_SYS_STACK
        代碼中用到了cpsr_c,那么究竟cpsr_c與cpsr是什么關系?

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

        ARM9的每種工作模式除R0~R15共16個寄存器外,還有第17個寄存器CPSR(Current Program Status Register),叫做當前程序狀態寄存器,CPSR中一些位被用于標識各種狀態,一些位被用于標識當前出于什么工作模式。CPSR有4個8位區域:標志域(F)、狀態域(S)、擴展域(X)、控制域(C)。

        在ARM 處理器中,只有MSR 指令可以直接設置狀態寄存器CPSR或SPSR。指令格式如下:
        MSR{cond} psr_fields,#immed_8r(8位立即數)
        MSR{cond} psr_fields,Rm
        其中: psr 指CPSR 或SPSR
        fields 指定傳送的區域。Fields 可以是以下的一種或多種(字母必須為小寫):

        • c 控制域屏蔽字節(psr[7…0])
        • x 擴展域屏蔽字節(psr[27…8])
        • s 狀態域屏蔽字節(psr[31.…28])


        關鍵詞: ARM9CPSR寄存

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 定南县| 元谋县| 蓬溪县| 循化| 双峰县| 灌南县| 子长县| 永吉县| 白城市| 民勤县| 武乡县| 泰宁县| 邵阳县| 安化县| 瑞金市| 青铜峡市| 曲阳县| 两当县| 花垣县| 城口县| 修武县| 博野县| 龙陵县| 射阳县| 温泉县| 津市市| 呼玛县| 黎平县| 诏安县| 临湘市| 平凉市| 富锦市| 惠州市| 桓仁| 阿鲁科尔沁旗| 赞皇县| 东乌珠穆沁旗| 蕲春县| 江口县| 沙雅县| 丽江市|