<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM微處理器寄存器和處理器模式

ARM微處理器寄存器和處理器模式

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò ) 收藏
ARM 處理器有二十七個(gè)寄存器,其中一些是在一定條件下使用的,所以一次只能使用十六個(gè)...
  • 寄存器 0 到寄存器 7 是通用寄存器并可以用做任何目的。不象 80x86 處理器那樣要求特定寄存器被用做棧訪(fǎng)問(wèn),或者象 6502 那樣把數學(xué)計算的結果放置到一個(gè)累加器中,ARM 處理器在寄存器使用上是高度靈活的。
  • 寄存器 8 到 12 是通用寄存器,但是在切換到 FIQ 模式的時(shí)候,使用它們的影子(shadow)寄存器。
  • 寄存器 13 典型的用做 OS 棧指針,但可被用做一個(gè)通用寄存器。這是一個(gè)操作系統問(wèn)題,不是一個(gè)處理器問(wèn)題,所以如果你不使用棧,只要你以后恢復它,你可以在你的代碼中自由的占用(corrupt)它。每個(gè)處理器模式都有這個(gè)寄存器的影子寄存器。
  • 寄存器 14 專(zhuān)職持有返回點(diǎn)的地址以便于寫(xiě)子例程。當你執行帶連接的分支的時(shí)候,把返回地址存儲到 R14 中。同樣在程序第一次運行的時(shí)候,把退出地址保存在 R14 中。R14 的所有實(shí)例必須被保存到其他寄存器中(不是實(shí)際上有效)或一個(gè)棧中。這個(gè)寄存器在各個(gè)處理器模式下都有影子寄存器。一旦已經(jīng)保存了連接地址,這個(gè)寄存器就可以用做通用寄存器了。
  • 寄存器 15 是程序計數器。它除了持有指示程序當前使用的地址的二十六位數之外,還持有處理器的狀態(tài)。

為更清晰一些... 提供下列圖表:

本文引用地址:http://dyxdggzs.com/article/201611/317641.htm
User 模式  SVC 模式   IRQ 模式   FIQ 模式  APCSR0 ------- R0 ------- R0 ------- R0        a1R1 ------- R1 ------- R1 ------- R1        a2R2 ------- R2 ------- R2 ------- R2        a3R3 ------- R3 ------- R3 ------- R3        a4R4 ------- R4 ------- R4 ------- R4        v1R5 ------- R5 ------- R5 ------- R5        v2R6 ------- R6 ------- R6 ------- R6        v3R7 ------- R7 ------- R7 ------- R7        v4R8 ------- R8 ------- R8         R8_fiq    v5R9 ------- R9 ------- R9         R9_fiq    v6R10 ------ R10 ------ R10        R10_fiq   slR11 ------ R11 ------ R11        R11_fiq   fpR12 ------ R12 ------ R12        R12_fiq   ipR13        R13_svc    R13_irq    R13_fiq   spR14        R14_svc    R14_irq    R14_fiq   lr------------- R15 / PC -------------       pc 

程序計數器構造如下:

位   31  30  29  28  27  26  25------------2  1  0N   Z   C   V   I   F    程 序 計 數 器  S1 S0

下面是你想知道的"模式",比如上面提及的"FIQ"模式。

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


評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>