Thumb指令集與ARM指令集的區別

2021-06-23 00:31:04 字數 1033 閱讀 9541

thumb指令集

thumb指令可以看做是arm指令壓縮形式的子集,是針對**密度的問題而提出的,它具有16為的**密度。thumb不是乙個完整的體系結構,不能指望處理程式只執行thumb指令而不支援arm指令集。因此,thumb指令只需要支援通用功能,必要時,可借助完善的arm指令集,例如:所有異常自動進入arm狀態。

在編寫thumb指令時,先要使用偽指令code16宣告,而且在arm指令中要使用bx指令跳轉到thumb指令,以切換處理器狀態。編寫arm指令時,可使用偽指令code32宣告。

.**密度:單位儲存空間中包含的指令的個數。例如

arm指令是32位的,而thumb指令時16位的,如果在1k的儲存空間中,可以放32條arm指令,就可以放64條thumb指令,因此在存放thunb指令時,**密度高。

thumb指令集與arm指令集的區別

thumb指令集沒有協處理器指令、訊號量指令以及訪問cpsr或spsr的指令,沒有乘加指令及64位乘法指令等,且指令的第二運算元受到限制;除了跳轉指令b有條件執行功能外,其他指令均為無條件執行;大多數thumb資料處理指令採用2位址格式。thumb指令集與arm指令集的區別一般有如下幾點:

ø         跳轉指令

程式相對轉移,特別是條件跳轉與arm**下的跳轉相比,在範圍上有更多的限制,轉向子程式是無條件的轉移。

ø         資料處理指令

資料處理指令是對通用暫存器進行操作,在大多數情況下,操作的結果須放入其中乙個運算元暫存器中,而不是第三個暫存器中。

資料處理操作比arm狀態的更少,訪問暫存器r8—r15受到一定限制。

(除mov和add指令訪問暫存器r8—r15外,其他資料處理指令總是更新cpsr中alu狀態標誌)

訪問暫存器r8—r15的thumb資料處理指令不能更新cpsr中的alu狀態標誌

ø         單暫存器載入和儲存指令

在thumb狀態下,單暫存器載入和儲存指令只能訪問暫存器r0—r7

ø         批量暫存器載入和儲存指令

ldm和stm指令可以將任何範圍為r0——r7的暫存器子集載入或儲存

Thumb指令集與ARM指令集的區別

thumb指令集 thumb指令可以看做是arm指令壓縮形式的子集,是針對 密度的問題而提出的,它具有16為的 密度。thumb不是乙個完整的體系結構,不能指望處理程式只執行thumb指令而不支援arm指令集。因此,thumb指令只需要支援通用功能,必要時,可借助完善的arm指令集,例如 所有異常自...

gbip指令集 GB CPU 指令與指令集

gb cpu 指令與指令集 到目前為止,雖然 cpu 已經擁有了算術邏輯單元 alu 進行算術邏輯運算和使用暫存器儲存資料,但它仍然缺少一些正常工作時需要的資訊.就像建築工人無法僅僅依靠材料和工具憑空造出一棟高樓大廈,除非建築師能為其提供詳細的建築圖紙.cpu 也是一樣的,開發者需要通過某種方式告訴...

ARM 指令集 比較指令

譯註 cmp 和 cmp 是算術指令,teq 和 tst 是邏輯指令。把它們歸入一類的原因是它們的 s 位總是設定的,就是說,它們總是影響標誌位。compare negative cmn status op 1 op 2 cmn同於cmp,但它允許你與小負值 運算元 2 的取負的值 進行比較,比如難...