如果我想编写一个等同于ARM汇编指令的C语句:
mov r0, #2
我是否将其编写为函数? (即):
myfunc1
mov r0, #2
bx lr
或者我这样写:
asm("mov r0, #2)
答案 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列表中,以便编译器可以在调用代码之前保存寄存器(如果需要)。