ARM对C语句的指令

时间:2014-03-12 00:25:06

标签: c assembly arm

如果我想编写一个等同于ARM汇编指令的C语句:

mov r0, #2 

我是否将其编写为函数? (即):

myfunc1 
mov r0, #2 
bx lr 

或者我这样写:

asm("mov r0, #2)

1 个答案:

答案 0 :(得分:1)

为C编写内联程序取决于编译器扩展。具体到您使用的编译器。

对于gcc,construct to use is

   asm ( assembler template 
       : output operands                  /* optional */
       : input operands                   /* optional */
       : list of clobbered registers      /* optional */
       );

所以,你是对的,你使用asm("mov r0, #2")如果你使用gcc。

但是,您随意使用r0并且您没有告诉编译器,因此您的汇编代码将与编译器冲突。您需要将r0添加到clobber列表中,以便编译器可以在调用代码之前保存寄存器(如果需要)。