日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARM指令集与Thumb指令集

發布時間:2023/12/20 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARM指令集与Thumb指令集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、Thumb指令集來源

ARM的RISC體系結構的發展中已經提供了低功耗、小體積、高性能的方案。而為了解決代碼長度的問題,ARM體系結構又開發了一種新的指令體系,就是Thumb指令集,稱之為T變種。

Thumb是ARM體系結構的擴展(thumb不是一個完整的體系結構,不能指望處理器只執行thumb指令集而不支持arm指令集。它從標準32位ARM指令集抽出來的36條指令格式,重新編成16位的操作碼。這能帶來很高的代碼密度,例如:在1K的存儲空間中,可以放32條ARM指令,就可以放64條Thumb指令,因此Thunb指令代碼密度高。

2、Thumb指令集和ARM指令的時間復雜度和空間復雜度對比

在ARM處理器中,內核同時支持32位的ARM指令和16位的Thumb令。

  • 當用戶使用C程序來處理應用時,如果編譯為Thumb指令,Thumb代碼使用的指令數要比ARM代碼多約30%~40%,但最終生成的目標代碼所需的存儲空間約為ARM代碼的60%~70%(因為每條指令所占空間是arm指令的一半)。

?

  • 使用32位存儲器,ARM代碼比Thumb代碼快約40%;使用16位存儲器,Thumb代碼比ARM指令快約40%~50%。具體解釋如下:

在存儲器是32位的情況下,ARM性能較好,這時因為同樣的代碼編譯的結果Thumb指令將會比ARM 多,Thumb指令仍舊花費指令周期來從32-bit塊內存預取。在16-bit內存上,即使有比ARM多的代碼,這時Thumb性能也較好,因為Thumb每一條指令預取需要一個周期而每條ARM指令需要兩個周期。
另外在16-bit內存上,Thumb的性能降低了;這是因為數據去操作和特殊的堆棧操作,即使在Thumb下,堆棧操作仍是32-bit操作,導致低的性能在16-bit內存架構上。一個改進的方法是提供32-bit的內存來放置堆棧。在這種情況下的性能提高到了32-bit內存架構的水平。主要的差別是因為使用的整型的(32-bit)全局數據將仍被存儲在16-bit內存上。

與ARM代碼相比較,使用Thumb代碼,存儲器的功耗會降低約30%。

3、Thumb指令集和ARM指令的混合編程

若兩者結合使用,充分發揮其各自的優點,會取得更好的效果。Thumb以其較高的代碼密度和在窄存儲器上的性能,使得它在很多系統中得到廣泛應用。但在很多情況下,還是不得不使用ARM指令,這是因為:

①ARM處理器的一些特定功能必須由ARM指令實現,其中包括PSR指令(不能直接訪問CPSR 和SPSR,必須先切換到ARM狀態下,再使用MSR和MRS來實現)、協處理器指令

②異常發生時,處理器自動進入ARM狀態,即在異常中斷處理程序入口的一些指令是ARM指令(ARM程序頭ARMassemblerheader),然后根據需要程序可以切換到Thumb狀態,在異常中斷處理程序返回前,程序再切換到ARM狀態。如果異常處理程序需要使用Thumb指令也必須通用一個。

③ARM處理器總是從ARM狀態開始執行,如果要在調試器中運行Thumb程序,必須為該Thumb程序添加一個ARM程序頭,然后再切換到Thumb狀態,調用該Thumb程序。

?

基于以上原因,即使程序需要由Thumb代碼實現,也必須通過ARM-Thumb互交(ARM-Thumbinterworking)進入Thumb狀態。ARM-Thumb互交是指對匯編語言和C/C++語言的ARM和Thumb代碼進行連接的方法,它進行兩種狀態(ARM和Thumb狀態)間的切換。在進行這種切換時,有時需使用額外的代碼,這些代碼被稱為Veneer。AAPCS定義了ARM和Thumb過程調用的標準。
?

ref:

https://www.sohu.com/a/339622340_100281310

https://www.21ic.com/app/mcu/201812/780644.htm

http://www.elecfans.com/emb/574929.html

https://www.21ic.com/embed/jiaocheng/jichu/201806/61024.html

https://www.xuebuyuan.com/1257101.html

https://www.cnblogs.com/fx427103/p/3968243.html

總結

以上是生活随笔為你收集整理的ARM指令集与Thumb指令集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。