首页 > 技术文章 > 计算机是如何工作的

gyt0520 2016-02-24 23:25 原文

                                                                       计算机是如何工作的

 

                                                                               姓名:高艺桐

                                                                               学习资源:《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

一、存储程序计算机工作的模型

冯诺依曼体系结构换句话讲为存储程序计算机模型。

(1)从硬件角度

 CPU和内存间通过总线连接,CPU内的IP寄存器分为16bit 32bit 64bit,CPU从IP指向的内存地址取指令执行,IP自加一,取下一条指令再执行。

(2)从程序员角度

CPU内进行for循环执行指令,与内存间通过总线连接。

ABI:程序与CPU的接口界面

EPI:自加一,执行下一条指令

二、X86 汇编基础

2.1 X86 CPU寄存器

(1)通用寄存器

注:开头为E的寄存器为32位寄存器 EBP堆栈基寄存器 ESP堆栈顶寄存器

(2)段寄存器

注:CS-代码段寄存器  SS-堆栈寄存器

CPU实际取指令 CS:eip来确定位一个指令

(3)标志寄存器:标志当前的一个位置

2.2 X86 64位寄存器

32位与64位核心机制上差别不大。开头带R的指64位寄存器

(1)通用寄存器

2.3 mov指令及几种寻址方式

(1)mov指令

注:movb代表8位,movw代表16位.movl代表32位,movq代表64位。

寄存器模式,以%开头的寄存器标示等。

movl  %eax ,%edx    将eax赋值给edx                                   寄存器寻址

movl  &ox123,%edx   123的16进制数放入edx                         立即寻址

movlx ox123%,%edx 16进制123所指的内存数据放入edx           直接寻址(直接访问一个指定的内存地址数据)

movlx (%ebx),%edx 将寄存器的值直接作为内存地址访问         间接寻址

movlx 4(%ebx),%edx 在间接寻址的基础上改变寄存器的数值     变址寻址

2.4几种重要的汇编指令

三、分析实验楼中的代码

3.1进入实验楼进行实验 截图如下

    

   

 注:

cd Code 进行下载

i为插入模式 esc退出插入

删除整行以点开头的代码用dd组合删除,留下纯汇编代码

3.2进行代码分析

四、总结

 通过本次对Linux课程的学习,我了解到了计算机通过CPU中的寄存器读取指令进行工作,并掌握了简单的汇编指令,比如mov指令,push指令,pop指令,ret指令,leave指令等,通过对代码段的深入理解对以上指令又进行了巩固和提高,领悟了这些指令的异同,比如pop指令和push指令,push指令先进行%esp的减,再进行赋值;而pop指令先进行%esp的加,再将esp内存地址进行赋值。这些细节概念稍有疏忽,结果就会的大有不同。在日后的学习中,定要更加注意细节,完善自我。在实验楼的实验中,因为第一次接触Linux语言,所以在代码的粘贴步骤出现了问题,后来通过请教同学了解到了输入i进入插入模式,进行粘贴,esc键退出粘贴模式,让我受益匪浅。

  在日后对Linux课程的学习过程中,我定会更加的用心,细心,耐心,注重复习和巩固,养成良好的学习习惯。

 

 

 

 

 

 

 

 

 

推荐阅读