博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
作业一:计算机是如何工作的进行
阅读量:7303 次
发布时间:2019-06-30

本文共 1681 字,大约阅读时间需要 5 分钟。

计算机是如何工作的进行

一、实验过程及分析

 

**指令先从main函数开始---eip所指向的位置 ** `

main:

pushl   %ebp           ;将ebp的值(0)压入堆栈,esp指向下一个(96的位置)

movl    %esp, %ebp     ;将esp赋给ebp,ebp的指向位置变了,也指向(96的位置)

subl    $4, %esp       ;esp向下移动一个编号92的位置

movl $18, (%esp);立即数18放到esp当前指向的位置(92)

call    zheng          ;{对应两条指令1.pushl eip 2.movl zheng eip}  执行call指令的时候,eip实际上指向下一条指令(代码行数是23的代码)将eip(23)压栈,而 eip指向zheng   指令从zheng函数开始执行

addl    $1, %eax       ;eax=24+1=25

leave           ;1.movl %ebp,%esp esp与ebp都指向编号1 2.popl %ebp ebp,esp都指向0,堆栈回到了最初的状态

ret`                   ;最后return是回到main函数之前的堆栈

zheng:

pushl   %ebp           ;ebp当前指向为96,将ebp(96)压入栈,esp指向编号84

movl    %esp, %ebp    ;ebp也指向84

 subl $4, %esp ;esp指向下一位置80 

movl    8(%ebp), %eax ;变址寻址8,ebp向上+2个位置,值为18,将18赋给eax

movl    %eax, (%esp)  ;eax=18,把18放到80的位置

call    wei          ;1.pushl eip(esp移到76,eip为15行)2.eip指向wei函数的位置

leave    ;1.movl %ebp,%esp ebp指向4,esp也指向84  2.popl %ebp ebp指向96的位置,同时esp上移指向88

 

ret      ;popl eip,把esp上移指向92,eip指向行号23,main中call的下一条指令

 wei:

pushl   %ebp         ;当前ebp指向84,esp指向72的位置

movl    %esp, %ebp   ;把ebp也指向72的位置

movl    8(%ebp), %eax ;ebp+8,即向上移动两个编号的位置,eax=18

addl    $6, %eax      ;eax=18+6=24

popl    %ebp  ;将ebp84的内容放回ebp,效果是ebp指向原来84的位置,同样,esp减4,指向76的位置

ret     ;return就是popl eip,esp指向80,同时eip指向了行号15的位置,执行zheng函数里call指令的下一条。


二、总结部分:

计算机大部分都是用冯诺依曼体系结构,即存储程序计算机。

两个层面:

1.硬件 cpu(IP寄存器:指针,指向内存的某块区域)——总线——内存(代码与数据)

2.程序员 内存存储指令与数据, CPU解释执行指令

计算机在执行程序时须先将要执行的相关程序和数据放入内存储器中,在执行程序时CPU根据当前程序指针寄存器的内容取出指令并执行指令,然后再取出下一条指令并执行,如此循环下去直到程序结束指令时才停止执行。其工作过程就是不断地取指令和执行指令的过程,最后将计算的结果放入指令指定的存储器地址中。

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

转载于:https://www.cnblogs.com/zhengwei0712/p/5207299.html

你可能感兴趣的文章
iconfont字体图标
查看>>
AndroidStudio下加入百度地图的使用 (三)——API基本方法及常量属性
查看>>
二、2、上传成功也不一定得到flag哦!
查看>>
火狐浏览器设置placeholder的时候记得改opacity
查看>>
Mina学习
查看>>
java通过句柄访问对象
查看>>
extern "C"与C++中的C函数调用(4)—— 如何在C中调用C++函数
查看>>
计算几何 模板
查看>>
“The Psychology of Cross Country”笔记
查看>>
10 Web Apps for Developers 为开发者提供的10款Web应用程序
查看>>
python之正则表达式
查看>>
Shell命令-文件及目录操作之touch、tree
查看>>
修改K/3 Cloud管理中心端口
查看>>
C#语言课程11月7日
查看>>
linux日常1-踢出用户
查看>>
MFC多文档应用程序同时显示两个视图
查看>>
github快速入门(一)
查看>>
PHP全栈开发(八):CSS Ⅸ dispaly & visibility
查看>>
正则表达式
查看>>
【Oracle 12c】最新CUUG OCP-071考试题库(56题)
查看>>