ARM 世界有没有办法只使用 32 位指令(例如在 Cortex M3 上)并禁用 16 位拇指指令?我说的是指令本身,而不是加载/存储访问机制。
对不起,如果这个问题已经被问过了,或者这个问题太愚蠢了,等等。
非常感谢您的帮助...
如果您只想强制选择 32 位编码而不是它们存在的 16 位编码,则可以在汇编中通过将.W
后缀添加到单个助记符来实现。然后,汇编器将发出 32 位编码,如果不可用,则引发错误。因此,您不能简单地将其应用于每条指令,因为有些指令只有16 位编码,但敲出某种基于正则表达式的怪诞转换似乎是可行的。如果您正在处理已编译的高级代码,那么转换中间汇编列表或破解汇编器/编译器可能是唯一可行的选择。
cortex-m3 只是一个拇指机,所以它只有一个 16 但拇指核心,32 位指令只是未定义的 16 位扩展,所以你必须使用 16 位拇指核心才能获得 32 位拇指2 扩展。 ..所以根据定义,这是不可能的。
32 位扩展也不足以完成您可能想要的一切。
大多数较新的芯片仅使用 Thumb-2 指令集,这意味着您将拥有一些 16 位指令和一些 32 位指令。如果要使用老式的仅 32 位 ARM 指令集,则需要查找较旧的硬件。