【发布时间】:2018-05-20 07:03:24
【问题描述】:
在使用 C 编码时,我需要强制 IAR tp 在我的代码的某些部分使用某些 Cortex-M0+ 指令。
请不要提供纯 asm 函数或内联 asm 等。
我已经设法为 51 指令执行此操作,但无法为 ; ADR、BLX、RSBS、SBCS、SXTH 指令。
已禁用此函数的优化 (#pragma optimization=none)
通过考虑指令行为,我尝试了很多事情。 但 IAR 更喜欢使用不同指令的相同功能。
以前有没有其他人为这种不必要的事情而苦苦挣扎或有任何想法?
【问题讨论】:
-
不能保证它可以发出所有这些,但我希望
rsbs应该是可行的。不过,也许不会禁用优化;只有当它可以在设置标志和单独的减法结果之间进行 CSE 时,您才可能得到它。 -
在任何地方都有 IAR 的在线编译器吗?即像Matt Godbolt's compiler explorer,只是它只安装了gcc。
-
gcc 使用
rsbs和-mcpu=cortex-m4,但不使用-mcpu=cortext-m0来实现此功能:godbolt.org/g/xUraX9。也许 IAR 出于某种原因故意避开它? -
这个练习的目的是什么?
-
asm 是获得所需说明的唯一方法。如果你想要特定的指令,如果你想要编译器选择,那么你就放弃了对特定指令的权利。
标签: assembly arm compiler-optimization iar cortex-m