首页 > 系统服务 > 详细

《Linux内核分析》 第一节 计算机是如何工作的

时间:2016-02-28 18:20:48      阅读:334      评论:0      收藏:0      [点我收藏+]

黄胤凯   原创作品转载请注明出处   《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 

 

技术分享

 

在实验楼中运行该段代码,个别数字进行了调整,实验运行结果如下:

技术分享

技术分享

 

二、程序分析

根据视频中的讲解,将源代码与汇编后的代码比对来看:

技术分享

由图中可以看出源代码中每一个函数都有与之对应的一段汇编代码

由于在之前学习过相应的汇编指令,所以从几个陌生指令开始详解。leave指令与enter指令相对应,leave指令与enter指令的实质是:

技术分享

可以将这两个指令换为相应的压栈和弹栈指令。

call f:pushl eip

         movl f eip

 

开始整段代码进行分析:

技术分享

寄存器:

汇编代码中,寄存器eip从main函数开始依次指向f函数和g函数。

寄存器ebp和esp分别指向堆栈的栈顶和栈底。

函数的返回值默认使用eax寄存器存储返回给上一级函数。

技术分享

 

三、总结

从实质上来看,计算机的工作原理略显笨拙,通过一条条指令解决一系列的问题。冯诺依曼体系结构为CPU和总线解决指令而服务,这也就是冯诺依曼结构的重要意义。

但由于硬件基础越来越好,使计算机处理指令的速度越来越快,在表面上看来计算机的处理能力还是相对强大的。

总之,计算机利用硬件与软件的相互协作,高速而有效地处理大量的数据和指令。

 

《Linux内核分析》 第一节 计算机是如何工作的

原文:http://www.cnblogs.com/20132109HKK/p/5225027.html

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