BX改变了我们这里的手册中所说的指令集,就我所能找到的搜索范围而言,这意味着当CPU运行16位Thumb指令集时,它这次接受32位地址(我没有发现任何迹象表明以下命令会发生任何变化),以便您可以分支到更远的点,我理解得对吗?若有,是否全部呢?
据说我们使用的是Atmel AT91,大概是Cortex M3类型,但我能找到的关于Cortex M3的任何东西似乎都与我们所做的明显不同,虽然我在Keil uVision中找不到AT91,但他们也认为我们使用的是一位教授开发的平台,因此我怀疑这不是我们正在做的真实的事情。但我还是想知道这是什么东西,因为我正在考虑调查一般的组装...
1条答案
按热度按时间rqmkfv5c1#
您提到的处理器(Cortex M3)不支持ARM指令,因此BX对您不可用。只能使用基本Thumb指令。
话虽如此,还是值得给你一些背景知识:
BX指令执行分支(即,跳转),并根据分支地址的第0位将处理器切换到ARM或Thumb模式。这样做的目的不是让你跳得更远,而只是在模式之间切换。由于所有支持此指令的处理器都以ARM模式启动,因此切换到Thumb模式不会 * 增加 * 您的跳跃距离。
关于Thumb vs. ARM模式是微妙的,太多了,无法在这里列出,但一个很好的资源可以找到here。由于链接本身可能会死,这里有一个总结: