本文主要是介绍C 内联汇编,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这是一内个汇联编格的式。
拆解
asm
1.说明是一个内联汇编
asm-qualifiers
2.有三个值 volatile inline goto
volatile 是可选的,编译器有可能对汇编代码进行优化,使用 volatile 关键字之后,告诉编译器不要优化手写的内联汇编代码。
语法规则
asm [volatile] ("汇编指令")
Assembler Template
3.是一个字符串,是放汇编指令的,
- 超过一条指令,必须用\n\t分隔符进行分割;
- 多条汇编指令,可以写在一行,也可以写在多行;
- 所有指令,必须用双引号包裹起来;
#include <stdio.h>int a = 1;
int b = 2;
int c; int main()
{asm volatile ("movl a, %eax\n\t""addl b, %eax\n\t""movl %eax, c");printf("c = %d \n", c);return 0;
}
C语言中会自动把两个连续的字符串字面量拼接成一个,所以"nop\n\tnop\n\t" "nop"
这两个字符串会自动拼接成一个字符串。
除了汇编指令还有,下面带冒号4,5,6
OutputOperands
小例子
结果
解释
它的反汇编代码
下面用寄存器版本试试
结果一样
汇编
例子2
把b的变量给到a
这篇关于C 内联汇编的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!