有人可以告诉我如何使用 TI 代码编写器工作室(用于 ARM)在 C 代码中执行内联汇编代码吗?
我搜索并尝试过,但没有任何效果。
例如,当我尝试这个非常简单的代码时:
asm("push r0\n");
或这个
__asm("push r0\n");
我总是得到:
[E0002] 非法助记符指定 push r0
1 装配错误,无装配警告
我读到一些东西说我以前的代码是 GCC 风格,而 TI 编译器不接受它!。那我怎样才能执行我自己的内联汇编代码呢?
有人可以告诉我如何使用 TI 代码编写器工作室(用于 ARM)在 C 代码中执行内联汇编代码吗?
我搜索并尝试过,但没有任何效果。
例如,当我尝试这个非常简单的代码时:
asm("push r0\n");
或这个
__asm("push r0\n");
我总是得到:
[E0002] 非法助记符指定 push r0
1 装配错误,无装配警告
我读到一些东西说我以前的代码是 GCC 风格,而 TI 编译器不接受它!。那我怎样才能执行我自己的内联汇编代码呢?
终于我找到了解决办法!!
主要问题将通过在汇编指令之前添加空格或制表符来解决,如下所示:
asm(" MOVS R0, #5\n");
这不起作用:
asm("MOVS R0, #5\n");
在 push 中,我们必须将寄存器放在大括号 {R0}
asm(" PUSH {R0}\n");
希望有帮助。
我不知道 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