使用TI代码编写器工作室(适用于ARM)在C代码中进行内联汇编

时间:2015-07-04 09:34:19

标签: assembly arm code-composer

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

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

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

asm("push r0\n");

或者

__asm("push r0\n");

我总是得到:

  

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

     

1装配错误,无装配警告

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

2 个答案:

答案 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