7

有人可以告诉我如何使用 TI 代码编写器工作室(用于 ARM)在 C 代码中执行内联汇编代码吗?

我搜索并尝试过,但没有任何效果。

例如,当我尝试这个非常简单的代码时:

asm("push r0\n");

或这个

__asm("push r0\n");

我总是得到:

[E0002] 非法助记符指定 push r0

1 装配错误,无装配警告

我读到一些东西说我以前的代码是 GCC 风格,而 TI 编译器不接受它!。那我怎样才能执行我自己的内联汇编代码呢?

4

2 回答 2

7

终于我找到了解决办法!!

主要问题将通过在汇编指令之前添加空格或制表符来解决,如下所示:

asm(" MOVS R0, #5\n");

这不起作用:

asm("MOVS R0, #5\n");

在 push 中,我们必须将寄存器放在大括号 {R0}

asm(" PUSH {R0}\n");

希望有帮助。

于 2015-07-04T12:41:09.880 回答
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

于 2015-07-04T09:52:05.950 回答