计算机是如何工作的
计算机是如何工作的
姓名:高艺桐
学习资源:《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课程的学习过程中,我定会更加的用心,细心,耐心,注重复习和巩固,养成良好的学习习惯。