博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20135337朱荟潼 Linux第一周学习总结——计算机是如何工作的
阅读量:7047 次
发布时间:2019-06-28

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

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

1.冯诺依曼体系结构

---核心:存储程序计算机

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

2.X86汇编基础

(1)通用寄存器(32位)

EAX:累加寄存器,常用于运算;

EBX:基址寄存器,常用于地址索引;

ECX:计数寄存器,常用于计数;

EDX:数据寄存器,常用于数据传递;

ESP:堆栈指针,与SS配合使用,可指向目前的堆栈位置;

EBP:基址指针寄存器,可用作SS的一个相对基址位置;

ESI:源变址寄存器,可用来存放相对于DS段之源变址指针;

EDI:目的变址寄存器,可用来存放相对于ES 段之目的变址指针。

(2) 段寄存器

CS:代码段寄存器(存有代码)

DS:数据段寄存器
SS:堆栈段寄存器
ES:附加段寄存器

(3) eip特点:

a.自加1条指令。 从该指令执行完自动指向下一条指令。

b.只可被一下指令修改:call,ret,jmp,条件跳转

(4)cpu在实际取指令是根据 cs:eip 来定位一条指令.

(5)堆栈是向下增长的。

3.X86汇编指令

(1)寻址方式

744834-20160228131017205-753943094.png

(2)Push,pop,ret,enter,leave

744834-20160228131025893-1137004969.png

744834-20160228131032565-699178596.png

(3)Eax 寄存器

函数返回值默认用它存储,返回给上一级函数

(4)函数调用堆栈是由逻辑上多个堆栈叠加起来的

4.实验

(1)创建5337.c并查看

744834-20160228003327643-373972472.png

744834-20160228003338830-1154963491.png

(2)编译

744834-20160228003357627-1940922758.png

744834-20160228003408627-1517119972.png

(3)修改成汇编语言

744834-20160228003633034-2013399694.png

把.XXX删去即可

744834-20160228003420002-2007527094.png

(4)栈的变化分析

针对实验中的分析(主函数main,俩子函数分别是g,f):

744834-20160228004535252-1453374661.jpg

(ps:分析栈的变化时,笔的颜色分别代表一个函数)

函数之间(子函数改名:a,b):

744834-20160228004000580-58438499.jpg

学习总结

上学期学习过相关内容,所以这次课程的开始相对比较容易,同时对于这学期的学习内容也会努力学习,知识内容的掌握更加深刻。

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

转载于:https://www.cnblogs.com/zzzz5/p/5211553.html

你可能感兴趣的文章
第一次写博客
查看>>
java 桌面程序打包 EXE4J
查看>>
05-spark streaming & kafka
查看>>
python杂记
查看>>
Touch基本
查看>>
【uva】1220 Party at Hali-Bula
查看>>
cd 简化命令
查看>>
《JAVA NIO》Channel
查看>>
实验6
查看>>
今日练习
查看>>
学习的快乐
查看>>
可以穿墙的下载者VC源码
查看>>
有关casperjs
查看>>
LeetCode-63-Unique Paths II
查看>>
Ajax介绍
查看>>
shell命令:getevent和sendevent
查看>>
日历控件
查看>>
一本通 1274:【例9.18】合并石子
查看>>
GC是如何回收SoftReference对象的
查看>>
linux tomcat 的安装
查看>>