新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM匯編指令A(yù)RM工作模式、寄存器

        ARM匯編指令A(yù)RM工作模式、寄存器

        作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏

        1、ARM工作模式

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

        從編程的角度來看,ARM微處理器的工作狀態(tài)一般有兩種,并可在兩種工作狀態(tài)之間進(jìn)行切換:

        △:第一種為ARM狀態(tài),此時(shí)處理器執(zhí)行32位的的字對(duì)齊的ARM指令。

        △:第二種為Thumb狀態(tài),此時(shí)處理器執(zhí)行16位的、半字對(duì)齊的Thumb指令。

        當(dāng)ARM微處理器執(zhí)行32位的ARM指令集時(shí),工作在ARM狀態(tài);

        當(dāng)ARM微處理器執(zhí)行16位的Thumb指令集時(shí),工作在Thumb狀態(tài)。

        在程序的執(zhí)行過程中,微處理器可以隨時(shí)在兩種工作狀態(tài)之間切換,并且,處理器工作狀態(tài)

        的轉(zhuǎn)變并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。

        1)存儲(chǔ)器格式

        ARM體系結(jié)構(gòu)將存儲(chǔ)器看作是從零地址開始的字節(jié)的線性組合。

        從零字節(jié)到三字節(jié)地址放置地一個(gè)存儲(chǔ)的字(32位)數(shù)據(jù),從第四個(gè)字節(jié)到第七個(gè)字節(jié)

        放置第二個(gè)存取器的子數(shù)據(jù),依次排序。

        作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB。

        ARM體系結(jié)構(gòu)可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù),稱之為大端格式和小端格式。

        △:大端格式:字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中。

        △:小端格式:與大端格式正好相反。

        2)工作模式

        ARM微處理器支持7種工作模式,分別為:

        a、用戶模式(usr)用于正常執(zhí)行程序

        b、快速中斷模式(fiq)用于高速數(shù)據(jù)傳輸

        c、外部中斷模式(irq)用于通常的中斷處理

        d、管理模式(svc)操作系統(tǒng)使用的保護(hù)模式

        e、數(shù)據(jù)訪問終止模式(abt)當(dāng)數(shù)據(jù)或者指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。

        f、系統(tǒng)模式(sys)運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)

        g、未定義指令中止模式(und)當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件

        注意:

        ARM微處理器的運(yùn)行模式可以通過軟件改變,也可以通過外部中斷或者異常處理改變。

        應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被3保護(hù)的系統(tǒng)資源是不能被訪問的。

        除用戶模式外,其余的6種模式稱為非用戶模式或者特權(quán)模式(Privileged Modes);

        其中出去用戶模式和系統(tǒng)模式以外以外的5種又稱為異常模式(Exception Modes),常用語處理中斷或者異常,以及要訪問受保護(hù)的系統(tǒng)資源等情況。

        2、ARM寄存器(基于ARM狀態(tài))

        先貼張圖片,一看就明白了:




        1)通用寄存器

        △:不分組寄存器(The unbanked registers)

        R0-R7

        這意味著在所有處理模式下,訪問的都是同一個(gè)物理寄存器。未分組寄存器沒有被系統(tǒng)用于特別的用途,

        任何可采用通用寄存器的場(chǎng)合都可以使用為分組寄存器。

        △:分組寄存器:

        R8-R14

        對(duì)于R8-R12:FIQ模式分組寄存器R8-R12以及FIQ以外的分組寄存器R8-R12

        對(duì)于R13-R14:寄存器R13通常用于堆棧指針SP

        寄存器R14用作子程序連接寄存器(Link Register-LR),也成為L(zhǎng)R,指向函數(shù)的返回地址。

        △:程序計(jì)數(shù)器

        R15(PC)

        寄存器R15也被用作程序計(jì)數(shù)器,也成為PC。其值等于當(dāng)前正在執(zhí)行的指令的地址+8。

        因?yàn)樵谌≈泛蛨?zhí)行之間多了一個(gè)譯碼的階段(這個(gè)我也不是很懂,就是知道要加兩個(gè)字)~~

        △:狀態(tài)寄存器

        CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq

        3、ARM寄存器(基于Thumb狀態(tài))

        還是直接上圖,這個(gè)是跟ARM狀態(tài)相比較的:



        4、CPSR/SPSR

        一張圖片搞定:



        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 阿拉尔市| 茶陵县| 三江| 三台县| 深圳市| 察雅县| 昌黎县| 德惠市| 景德镇市| 疏附县| 邢台市| 福海县| 香格里拉县| 饶阳县| 库尔勒市| 宜宾市| 罗山县| 海淀区| 团风县| 嘉义县| 武汉市| 遵化市| 米易县| 吉木萨尔县| 平安县| 保定市| 南平市| 德江县| 盐池县| 综艺| 松原市| 嘉黎县| 吐鲁番市| 静乐县| 彰武县| 顺平县| 安新县| 交城县| 天水市| 张北县| 紫阳县|