新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > arm寄存器 svc模式

        arm寄存器 svc模式

        作者: 時間:2016-11-10 來源:網絡 收藏
        ARM 處理器有二十七個寄存器,其中一些是在一定條件下使用的,所以一次只能使用十六個...

        寄存器 0 到寄存器 7 是通用寄存器并可以用做任何目的。不象 80x86 處理器那樣要求特定寄存器被用做棧訪問,或者象 6502 那樣把數學計算的結果放置到一個累加器中,ARM 處理器在寄存器使用上是高度靈活的。
        寄存器 8 到 12 是通用寄存器,但是在切換到 FIQ 模式的時候,使用它們的影子(shadow)寄存器。
        寄存器 13 典型的用做 OS 棧指針,但可被用做一個通用寄存器。這是一個操作系統問題,不是一個處理器問題,所以如果你不使用棧,只要你以后恢復它,你可以在你的代碼中自由的占用(corrupt)它。每個處理器模式都有這個寄存器的影子寄存器。
        寄存器 14 專職持有返回點的地址以便于寫子例程。當你執行帶連接的分支的時候,把返回地址存儲到 R14 中。同樣在程序第一次運行的時候,把退出地址保存在 R14 中。R14 的所有實例必須被保存到其他寄存器中(不是實際上有效)或一個棧中。這個寄存器在各個處理器模式下都有影子寄存器。一旦已經保存了連接地址,這個寄存器就可以用做通用寄存器了。
        寄存器 15 是程序計數器。它除了持有指示程序當前使用的地址的二十六位數之外,還持有處理器的狀態。
        為更清晰一些... 提供下列圖表:

        User 模式 SVC 模式 IRQ 模式 FIQ 模式 APCS

        R0 ------- R0 ------- R0 ------- R0 a1
        R1 ------- R1 ------- R1 ------- R1 a2
        R2 ------- R2 ------- R2 ------- R2 a3
        R3 ------- R3 ------- R3 ------- R3 a4
        R4 ------- R4 ------- R4 ------- R4 v1
        R5 ------- R5 ------- R5 ------- R5 v2
        R6 ------- R6 ------- R6 ------- R6 v3
        R7 ------- R7 ------- R7 ------- R7 v4
        R8 ------- R8 ------- R8 R8_fiq v5
        R9 ------- R9 ------- R9 R9_fiq v6
        R10 ------ R10 ------ R10 R10_fiq sl
        R11 ------ R11 ------ R11 R11_fiq fp
        R12 ------ R12 ------ R12 R12_fiq ip
        R13 R13_svc R13_irq R13_fiq sp
        R14 R14_svc R14_irq R14_fiq lr
        ------------- R15 / PC ------------- pc

        最右側的列是 APCS 代碼使用的名字,關于 APCS 的詳情參見這里。
        程序計數器構造如下:

        位 31 30 29 28 27 26 25------------2 1 0

        N Z C V I F 程 序 計 數 器 S1 S0

        對 R15 的詳細解釋,請參見 psr.html。
        下面是你想知道的"模式",比如上面提及的"FIQ"模式。

        用戶模式,運行應用程序的普通模式。限制你的內存訪問并且你不能直接讀取硬件設備。
        超級用戶模式(SVC 模式),主要用于 SWI(軟件中斷)和 OS(操作系統)。這個模式有額外的特權,允許你進一步控制計算機。例如,你必須進入超級用戶模式來讀取一個插件(podule)。這不能在用戶模式下完成。
        中斷模式(IRQ 模式),用來處理發起中斷的外設。這個模式也是有特權的。導致 IRQ 的設備有鍵盤、 VSync (在發生屏幕刷新的時候)、IOC 定時器、串行口、硬盤、軟盤、等等...
        快速中斷模式(FIQ 模式),用來處理發起快速中斷的外設。這個模式是有特權的。導致 FIQ 的設備有處理數據的軟盤,串行端口(比如在 82C71x 機器上的 A5000) 和 Econet。
        IRQ 和 FIQ 之間的區別是對于 FIQ 你必須盡快處理你事情并離開這個模式。IRQ 可以被 FIQ 所中斷但 IRQ 不能中斷 FIQ。為了使 FIQ 更快,所以有更多的影子寄存器。FIQ 不能調用 SWI。FIQ 還必須禁用中斷。如果一個 FIQ 例程必須重新啟用中斷,則它太慢了并應該是 IRQ 而不是 FIQ。


        關鍵詞: arm寄存器svc模

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 阳原县| 长乐市| 股票| 桃源县| 南平市| 天等县| 西青区| 黄冈市| 金阳县| 左贡县| 襄汾县| 呼玛县| 临桂县| 西乡县| 大邑县| 南部县| 保靖县| 陆川县| 武宁县| 扎鲁特旗| 泉州市| 吉安市| 万荣县| 长子县| 清涧县| 淮北市| 鸡泽县| 保山市| 玉环县| 河东区| 岱山县| 武冈市| 曲阳县| 奉贤区| 弥勒县| 邢台县| 柳河县| 调兵山市| 大理市| 金华市| 乐亭县|