一个小的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 

 

posted @ 2016-03-06 11:06  yktlll  阅读(129)  评论(0)    收藏  举报