一个小的asm
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个小的asm相关的知识,希望对你有一定的参考价值。
操作系统是如何工作的
操作系统借用一套完备的处理过程,对输入的程序执行并输出结果
#include <stdio.h>
#include <stdlib.h>
main{
_asm_ volatile(
"movl $0,%%eax\n\t"
"addl %1,%%eax\n\t"
"addl %2,%%eax\n\t"
"movl %%eax,%0\n\t"
:"=m"(val3);
:"c"(val1),"d"(val2);)
printf("val1:%d+val2:%d=val3:%d\n",val1,val2,val3);
return 0;
}
?
上述代码的意思是内嵌一段汇编程序,并且不让操作系统优化
将0赋值给eax,此时eax=0;
将1号里的值也就是val3与eax相加再给1号;
将此时的eax=1号+2号,的值给2号;
将eax=1号+2号,赋给0号;
将val3存入m指示的内存中;
val1赋给ecx,val2赋给edx;
输出结果检查;
函数执行完毕;
总结:通过本次学习,对linux稍有理解,如何在c中内嵌asm,还有转义字符%,指示m等的用法也有了一定的理解。
原创作品转载《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
以上是关于一个小的asm的主要内容,如果未能解决你的问题,请参考以下文章