使用 TI code composer studio(用于 ARM)在 C 代码中进行内联汇编
Inline assembly in C code using TI code composer studio (for ARM)
有人可以告诉我如何使用 TI code composer studio(用于 ARM)在 C 代码中执行内联汇编代码吗?
我搜索并尝试过但没有任何效果。
例如,当我尝试这个非常简单的代码时:
asm("push r0\n");
或这个
__asm("push r0\n");
我总是得到:
[E0002] Illegal mnemonic specified push r0
1 Assembly Error, No Assembly Warnings
我读到一些东西说我以前的代码是 GCC 风格,TI 编译器不接受它!。那么如何执行自己的内联汇编代码呢?
我不知道 ARM Code Composer Studio。但我知道 TI Code Composer Studio,如果是这个意思,我可以给你一些提示。使用 asm volatile ("...")
可能会有帮助。但是用那个方法你不能访问 C 变量。使用所谓的内在 functions/methods 是 link C 到汇编器的函数要好得多。这是 TI 文档的 link:http://www.ti.com/lit/ug/spru187o/spru187o.pdf section 7.5.4. Here is the link from which I got the idea: https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/3660
终于找到解决办法了!!
主要问题将通过在汇编指令前添加一个 space 或制表符来解决,如下所示:
asm(" MOVS R0, #5\n");
这行不通:
asm("MOVS R0, #5\n");
并且在 push 中我们必须将寄存器放在大括号 {R0}
asm(" PUSH {R0}\n");
希望对您有所帮助。
有人可以告诉我如何使用 TI code composer studio(用于 ARM)在 C 代码中执行内联汇编代码吗?
我搜索并尝试过但没有任何效果。
例如,当我尝试这个非常简单的代码时:
asm("push r0\n");
或这个
__asm("push r0\n");
我总是得到:
[E0002] Illegal mnemonic specified push r0
1 Assembly Error, No Assembly Warnings
我读到一些东西说我以前的代码是 GCC 风格,TI 编译器不接受它!。那么如何执行自己的内联汇编代码呢?
我不知道 ARM Code Composer Studio。但我知道 TI Code Composer Studio,如果是这个意思,我可以给你一些提示。使用 asm volatile ("...")
可能会有帮助。但是用那个方法你不能访问 C 变量。使用所谓的内在 functions/methods 是 link C 到汇编器的函数要好得多。这是 TI 文档的 link:http://www.ti.com/lit/ug/spru187o/spru187o.pdf section 7.5.4. Here is the link from which I got the idea: https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/3660
终于找到解决办法了!!
主要问题将通过在汇编指令前添加一个 space 或制表符来解决,如下所示:
asm(" MOVS R0, #5\n");
这行不通:
asm("MOVS R0, #5\n");
并且在 push 中我们必须将寄存器放在大括号 {R0}
asm(" PUSH {R0}\n");
希望对您有所帮助。