计算机是如何工作的
2016-02-23 16:14 20135128 阅读(236) 评论(0) 编辑 收藏 举报符钰婧
原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
一.实验题目
关于计算机是如何工作的这个问题,本文将通过一个反汇编C程序的实验来解释。
二. 实验内容和截图
在虚拟机环境下进行实验,新建main.c文件,将题目中的C程序复制到main.c文件中,,利用gcc命令编译成汇编代码
三.下面分析汇编代码工作过程中堆栈的变化
执行push指令,此时esp指向1,然后ebp的值被赋值给地址1所表示的值;
执行move指令,此时ebp也指向了1;
执行sub指令,esp的值减4,相当于往下移了一位,此时esp指向2;
执行move指令,为立即数寻址,就是将数字6赋值给寄存器eax,再把eax的值赋给esp所指地址表示的值;
执行call指令,esp减4指向地址3,eip指向下一条指令(26行处),然后将这个值赋给地址3表示的值,最后eip指向函数f。
首先寄存器eip指向程序的第一条指令(21行处),此时的栈为空栈。
这一段代码结束之后,ebp指向1,esp指向3。
四.总结
就好比这幅图 cpu里存储,在内存里执行汇编指令
计算机是如何工作的:把C语言变成机器语言,用汇编语言执行我们输入的指令。