齐昱博 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
一、计算机:辅助人脑的好工具
计算机其实是:接收用户输入指令与数据,经过*处理器的数据与逻辑单元运算处理后,以产生或储存成有用的信息。 冯.诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯.诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。冯.诺依曼也因此被人们称为“计算机之父”。将指令和数据同时存放在存储器中,是冯·诺依曼计算机方案的特点之一计算机由控制器、运算器、存储器、输入设备、输出设备五部分组成冯·诺依曼提出的计算机体系结构,奠定了现代计算机的结构理念。二、反汇编一个C语言程序,深入理解计算机如何工作
实验步骤如下: 首先打开终端,创建一个.c文件,在文件中敲入想要反汇编的c语言程序,c程序如下: 使用gcc进行编译编译成功后,使用代码gcc -S -o lab1.s lab1.c -m32反汇编成汇编代码,如下图:把.开头不必要的汇编程序删掉,如下: 分析汇编代码: line17:所有的程序都是由main函数开始的,所以找到main函数开始执行 line18:ebp的数值压入栈中,以便程序调用时能返回到main函数的最开始 line19:esp的值赋给ebp,现在ebp和esp指向一个位置 line20:esp的数值减4,也就是说esp和ebp中间间隔一个单元格 line21:8存在esp所指的空间 line22:调用函数f,即:pushl eip;jmp f line8:进入函数f line9:同理把ebp压入栈中 line10:esp的值赋给ebp line11:esp的数值减4 line12:ebp加上8,储存在eax中 line13:把eax的值放到esp所指向的空间 line14:调用函数g,即:pushl eip;jmp g line1:进入函数f line2:ebp的数值压入栈中 line3:esp的值赋给ebp,现在ebp和esp指向一个位置 line4:ebp加上8,储存在eax中 line5:把4加到eax中 line6:ebp从堆栈中弹出 line7:执行ret指令,也就是popl %eip,此时跳到第15行