簡體   English   中英

ARM匯編中的“更改指令集”-這到底是什么意思?

[英]“Change instruction set” in ARM assembly - what exactly does this mean?

BX更改了指令集,這是我們在此處已找到的手冊,據我所知,可以通過在遠處搜索來找到,這意味着,盡管CPU運行16位Thumb指令集,但這次它只接受32位地址(我發現沒有跡象表明后面的命令會發生任何變化),以便您可以更進一步地分支,對嗎? 如果是,那是全部嗎?
據說我們使用的是Atmel AT91,大概是Cortex M3類型的,但是我能得到的有關Cortex M3的任何東西似乎都和我們所做的有很大不同,盡管我在Keil uVision中找不到AT91,但它們也使用了由一位教授開發的平台,所以我懷疑這並不是我們正在做的真正的事情,但是我仍然想知道這是什么,因為我正在考慮將其組裝起來。

您提到的處理器(Cortex M3)不支持ARM指令,因此您無法使用BX。 您只能使用基本的Thumb指令。

話雖如此,值得給您一些背景知識:

BX指令執行分支(即跳轉),並根據分支地址的 0位將處理器切換為ARM或Thumb模式。 這樣做的目的不是讓您跳得更遠,而只是在模式之間進行切換。 由於所有支持該指令的處理器都以ARM模式啟動,因此切換到Thumb模式不會增加跳轉距離。

關於Thumb vs. ARM模式的詳細信息非常微妙,此處未列出太多,但可以在此處找到很好的資源。 由於單獨的鏈接可能會失效,因此以下是摘要:

  • 在Thumb模式下,“相對程序分支,尤其是條件分支,范圍比ARM代碼更受限制,並且子程序分支只能是無條件的”。
  • ARM模式可以訪問更多通用寄存器,而Thumb模式只能訪問r8-r15。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM