Thumb擴充套件

2022-02-03 17:17:29 字數 1147 閱讀 6233

thumb擴充套件

arm處理器已在嵌入式系統,手持計算機和其系統中得到了最大的應用,在這些系統中,系統對使用有限資源進行大量工作的要求很高。thumb擴充套件是為解決資源消耗中的某些方面而建立的,已成為當今幾乎所有arm晶元上的標準擴充套件。

小型系統上受限的資源之一是指令儲存器。有限的指令儲存器限制了可以在處理器上執行的程式的大小,因此想尋找減小**大小的方法。當可以找到編譯優化時,編譯時優化是實現此目標的一種顯而易見的方法。增大指令集的大小是另一種方法,但這通常會導致整個板上各個指令的大小增加,這將導致儲存指令所需的儲存量相應增加。可能無法通過減少編寫程式所需的指令數量來抵消。

正在尋找的質量稱為**密度。希望以某種方式完成同樣數量的工作,但使程式占用更少的空間。這是thumb擴充套件的用處。thumb嘗試通過允許使用大(32位)指令集,同時提供可以完成大部分工作的備用小(16位)指令集來獲得兩全其美的效果。而僅占用一半的空間。稱此概念為「**壓縮」,其思想是在執行之前將小型thumb指令「解壓縮」為等效的全尺寸32位arm指令。

thumb指令的外觀如何,與32位指令相比如何?

下圖顯示了如何將add指令從thumb轉換為arm的示例。注意,立即運算元(thumb中的8位)是如何用等於arm的零填充的。還要注意,add指令在解壓縮時會採用乙個附加的運算元。

較小的指令意味著必須具有較小的操作碼,並且必須具有更少或更少(或兩者都有)的運算元。thumb通過將其大部分指令限制為使用8個通用暫存器來代替通常的15個暫存器,從而部分確保了較小的運算元。一些指令可以訪問完整的暫存器集(例如mov),以解決較小的一些限制。暫存器組。

arm如何知道正在執行的指令是thumb指令還是常規arm指令?

arm晶元包含乙個特殊的狀態位,該位告訴cpu是期望壓縮的thumb指令還是標準的arm指令。該位由其自己的指令bx切換,每次程式設計師或編譯器希望在thumb模式和標準arm模式之間切換時,都必須將其插入**中。顯而易見的結果是,在模式之間進行切換會產生一些開銷,因此切換到thumb可能不是乙個好主意,除非可以為節省兩條以上的等​​效arm**指令。

thumb指令和arm指令

參考 一 為什麼乙個晶元需要thumb和arm兩套指令集 許多複雜的功能在複雜指令集 cisc 處理器上執行只需要單一的一條指令,即可,雖然可能有點慢,在精簡指令集處理器上可能需要多條指令,所以在精簡指令集 risc cpu上為了減少額外的指令對記憶體的消耗,考慮引入thumb指令集到處理器。現在最...

ARM狀態和THUMB狀態

在arm的體系結構中,可以工作在三種不同的狀態,一是arm狀態,二是thumb狀態及thumb 2狀態,三是除錯狀態。嵌入式系統開發與應用教程 第2版 上介紹說 有兩種狀態arm狀態和thumb狀態,當時初學甚為不解,現在一知半解時再看忽然想到了顯示中的例子 arm核就好比乙個高中學校,那種包含普通...

ARM指令與thumb 指令

1 thumb指令集概述 為相容資料匯流排寬度為16位的應用系統,arm體系結構除了支援執行效率很高的32位arm指令集以外,同時支援16位的thumb指令集。thumb指令集是arm指令集的乙個子集,是針對 密度問題而提出的,它具有16位的 寬度。與等價的32位 相比較,thumb指令集在保留32...