使用 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");

希望对您有所帮助。