BX改变了指令集说明我们这里的手册,据我所知,通过远近搜索,这意味着当CPU运行16位Thumb指令集时,它只接受这个时候的32位地址(我没有发现以下命令发生任何变化的迹象)这样你就可以进一步分支,我能理解吗?如果是,那就是全部吗?
据说我们使用的是Atmel AT91,可能是Cortex M3型,但是我能得到的关于Cortex M3的任何东西看起来都和我们做的有很大不同,而我在Keil uVision找不到AT91,他们也使用了由一位教授开发的平台,所以我怀疑它并不是我们正在做的事情,但我仍然想知道这是什么东西,因为我正在考虑整体研究装配。
答案 0 :(得分:3)
您提到的处理器(Cortex M3)不支持ARM指令,因此您无法使用BX。您只能使用基本Thumb指令。
话虽这么说,但值得给你一些背景知识:
BX指令执行分支(即跳转),并根据分支地址的0 th 位将处理器切换到ARM或Thumb模式。这样做的目的不是让你跳得更远,而只是在模式之间切换。由于支持该指令的所有处理器都在ARM模式下启动,因此切换到Thumb模式并不会增加跳跃距离。
Thumb与ARM模式的细节是微妙的,太多,无法在此列出,但可以找到一个好的资源here。由于链接本身可能已经死亡,这里有一个摘要: