什么是SVC模式【转】
生活随笔
收集整理的這篇文章主要介紹了
什么是SVC模式【转】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://blog.csdn.net/jobsss/article/details/7548550
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
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。
轉載于:https://www.cnblogs.com/sky-heaven/p/5567448.html
總結
以上是生活随笔為你收集整理的什么是SVC模式【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中Messenger的使用
- 下一篇: java FileReader/File