<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          arm寄存器 svc模式

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

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

          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

          最右側(cè)的列是 APCS 代碼使用的名字,關(guān)于 APCS 的詳情參見這里。
          程序計(jì)數(shù)器構(gòu)造如下:

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

          N Z C V I F 程 序 計(jì) 數(shù) 器 S1 S0

          對(duì) R15 的詳細(xì)解釋,請(qǐng)參見 psr.html。
          下面是你想知道的"模式",比如上面提及的"FIQ"模式。

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


          關(guān)鍵詞: arm寄存器svc模

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();