码迷,mamicode.com
首页 > 其他好文 > 详细

一个小的asm

时间:2016-03-06 12:38:31      阅读:204      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!