有人可以告诉我,如何使用TI代码编写器工作室(针对ARM)在C代码中执行内联汇编代码?
我搜索并尝试但没有任何效果。
例如,当我尝试这个非常简单的代码时:
asm("push r0\n");
或者
__asm("push r0\n");
我总是得到:
[E0002]非法助记符指定推r0
1装配错误,无装配警告
我读到的东西说我之前的代码是GCC风格,TI编译器不接受它!那我怎么能执行自己的内联汇编代码呢?
答案 0 :(得分:4)
最后我找到了解决方案!!
主要问题将通过在汇编指令之前添加空格或制表符来解决:
double
这不起作用:
asm(" MOVS R0, #5\n");
在推送中,我们必须将寄存器放在大括号{R0}
中asm("MOVS R0, #5\n");
希望有所帮助。
答案 1 :(得分:0)
我不知道ARM Code Composer Studio。但是我知道一个TI Code Composer Studio,如果是的话,我可以给你一些提示。使用asm volatile ("...")
可能有所帮助。但是使用该方法,您无法访问C变量。使用所谓的内部函数/方法会更好,它们是将C链接到汇编程序的函数。以下是TI文档的链接:http://www.ti.com/lit/ug/spru187o/spru187o.pdf第7.5.4节。以下是我从中得到这个想法的链接:https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/3660