Trumb/ARM 指令模式
生活随笔
收集整理的這篇文章主要介紹了
Trumb/ARM 指令模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?ARM
- ARM 指令集是一組提供一整套運算的 32 位指令。
ARMv4T
- ARMv4T 及更高版本定義了一個名為 Thumb 指令集的 16 位指令集。 32 位 ARM指令的多數功能都可用,但有些運算需要與其他指令結合使用。 Thumb 指令集提供了更好的代碼密度,但會損害性能。
ARMv6T2
- ARMv6T2 定義了 Thumb-2,它與 Thumb 指令集相比有了重大改進。 Thumb-2 提供了幾乎與 ARM 指令集完全相同的功能。 它同時具有 16 位和 32 位指令,并可同時實現類似于 ARM 的性能以及類似于 Thumb 的代碼密度。.
- 在 ARMv6 及更高版本中,所有 ARM 和 Thumb 指令都是小端的。 在 ARMv6T2及更高版本中,所有 Thumb-2 指令獲取也都是小端的。
ARMv7
- ARMv7 定義了 Thumb-2 執行環境 (Thumb-2EE)。 Thumb-2EE 指令集基于的是Thumb-2,但與后者相比有一些變更和補充,從而可以更好地適用于動態生成的代碼,即就在執行前或執行期間在設備上編譯的代碼。
Trumb
- 較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式運行指令均耗用4位的情形有關。
- 在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法訪問所有CPU的寄存器。
- 然而,較短的opcode提供整體更佳的編碼密度(注:意指代碼在存儲器中占的空間),即使有些運算需要更多的指令。特別在存儲器端口或總線寬度限制在32以下的情形時,更短的Thumb opcode能更有效地使用有限的存儲器帶寬,因而提供比32位代碼更佳的性能。
- 典型的嵌入式硬件僅具有較小的32-bit datapath定址范圍以及其他更窄的16 bits定址(例如Game Boy Advance)。在這種情形下,通常可行的方案是編譯成Thumb代碼,并自行最優化一些使用(非Thumb)32位指令集的CPU相關程序區,因而能將它們置入受限的32-bit總線寬度的存儲器中。
- 首顆具備Thumb技術的處理器是ARM7TDMI。所有ARM9和后來的家族,包括XScale,都納入了Thumb技術。
Thumb-2
- Thumb-2技術首見于“ARM1156核心”,并于2003年發表。Thumb-2擴展了受限的16位Thumb指令集,以額外的32位指令讓指令集的使用更廣泛。因此Thumb-2的預期目標是要達到近乎Thumb的編碼密度,但能表現出近乎ARM指令集在32位存儲器下的性能。
- Thumb-2至今也從ARM和Thumb指令集中衍伸出多種指令,包含位段操作、分支建表和條件運行等功能。
Thumb Execution Environment(ThumbEE)
- ThumbEE,也就是所謂的Thumb-2EE,業界稱為Jazelle RCT技術,于2005年發表,首見于“Cortex-A8”處理器。ThumbEE提供從Thumb-2而來的一些擴展性,在所處的運行環境下,使得指令集能特別適用于運行階段的編碼產生(例如即時編譯)。Thumb-2EE是專為一些語言如Limbo、Java、C#、Perl和Python,并能讓即時編譯器能夠輸出更小的編譯碼卻不會影響到性能。
- ThumbEE所提供的新功能,包括在每次訪問指令時自動檢查是否有無效指針,以及一種可以運行數組范圍檢查的指令,并能夠分支到分類器,其包含一小部分經常調用的編碼,通常用于高級語言功能的實現,例如對一個新對象做存儲器配置。
注:若要在 ARM 和 Thumb 狀態之間進行轉換,必須切換匯編程序模式,以便使用ARM 或? THUMB 指令生成正確的操作代碼。
總結
以上是生活随笔為你收集整理的Trumb/ARM 指令模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: error:cannot load dr
- 下一篇: USB的端点描述符详解-重新排版