BX更改指令集说我们这里有手册,据我远近搜索发现,这意味着虽然CPU运行16位Thumb指令集,但这次它接受了32位地址(我发现没有迹象表明以下命令会发生任何变化)以便您可以进一步分支到一个点,我理解对吗?如果是,仅此而已吗?
据说我们使用的是 Atmel AT91,大概是 Cortex M3 类型,但是我能接触到的关于 Cortex M3 的任何东西似乎都与我们所做的明显不同,虽然我在 Keil uVision 中找不到 AT91,但他们也是我们使用的方式由其中一位教授开发的平台,所以我怀疑这并不是我们正在做的真正的事情,但我仍然想知道这是什么东西,因为我正在考虑总体上研究 assembly ......
最佳答案
您提到的处理器(Cortex M3)不支持 ARM 指令,因此您无法使用 BX。您只能使用基本的 Thumb 指令。
话虽如此,值得为您提供一些背景知识:
BX 指令执行分支(即跳转)并根据分支地址的第 0 位将处理器切换到 ARM 或 Thumb 模式。这样做的目的不是让您跳得更远,而只是在模式之间切换。由于所有支持此指令的处理器都以 ARM 模式启动,因此切换到 Thumb 模式不会增加您的跳转距离。
关于 Thumb 与 ARM 模式的详细信息很微妙,这里不一一列举,但可以找到一个很好的资源 here .由于单独的链接可能会失效,这里是一个摘要:
关于assembly - ARM 汇编中的 "Change instruction set"- 这究竟是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24460083/