什麼是SVC模式

2021-06-06 08:00:34 字數 2291 閱讀 2473

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。

什麼是模式? 什麼是框架?

1 什麼是模式?模式,即pattern。其實就是解決某一類問題的方 你把解決某類問題的方法總結歸納到理論高度,那就是模式。alexander給出的經典定義是 每個模式都描述了乙個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在...

什麼是模式? 什麼是框架?

1 什麼是模式?模式,即pattern。其實就是解決某一類問題的方 你把解決某類問題的方法總結歸納到理論高度,那就是模式。alexander給出的經典定義是 每個模式都描述了乙個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在...

什麼是模式,什麼是框架

1 什麼是模式?模式,即pattern。其實就是解決某一類問題的方 你把解決某類問題的方法總結歸納到理論高度,那就是模式。alexander給出的經典定義是 每個模式都描述了乙個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在...