首页 > 其他 > 详细

一个小的asm

时间:2016-03-06 12:37:10      阅读:218      评论:0      收藏:0      [点我收藏+]

操作系统是如何工作的

操作系统借用一套完备的处理过程,对输入的程序执行并输出结果

 

 

#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

原文:http://www.cnblogs.com/yktlll/p/5246759.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!