在c/c++程序中嵌入式汇编遵循GCC内嵌汇编语法规则,如下
asm volatile(
汇编指令列表
:输出操作数 // 可选
:输入操作数 // 可选
:可能影像的寄存器或存储器 //可选
);
大概解释一下:
关键字asm,为gcc的关键字,表示进行内联汇编操作。
关键字volatile是可选的,要求编译器对后续括号内添加汇编程序不进行任何优化以保持其原状。如果没有添加此关键字,编译器可能会进行优化。
汇编指令列表:即需要嵌入的汇编指令。
输出操作数:用来指定当前内联汇编程序的输出操作符列表
输入操作数:用来指定当前内嵌汇编语句的输入操作符列表
相关代码如下:
#include
int main()
{
int sum;
int temp1 = 1024;
printf("hello world\r
");
__asm__ volatile(
"mov %0,%1
" //%0,%1形式的占位符,来表示c语言中变量sum、temp1
:"=r"(sum)
:"r"(temp1)
);
printf("sum = %d\r
",sum);
return 0;
}
实验结果如下:通过内嵌汇编完成对sum变量的赋值,有点多此_>_<_
留言与评论(共有 0 条评论) “” |