![](/img/trans.png)
[英]In arm64 assembly, what does "adrp x0, idmap_pg_dir;" instruction mean?
[英]“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模式的詳細信息非常微妙,此處未列出太多,但可以在此處找到很好的資源。 由於單獨的鏈接可能會失效,因此以下是摘要:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.