20135201李辰希《Linux内核分析》第一周 计算机是如何工作的?
2016-02-27 22:37
429 查看
计算机是如何工作的
从硬件来看:CPU与内存通过主线连接,CPU上的IP(可能是16、32、64位)总指向内存的某一块区域;IP指向的CS(代码段)也在内存中;CPU总是执行IP指向的指令。
从软件来看:API(应用程序编程接口,与编程人员)与ABI(程序与CPU的借口界面) 是两个比较重要的软件接口
以%标识的寄存器寻址不与内存“打交道”
直接寻址&立即数寻址
movl $0x123,%eax —— %eax=0x123
movl 0x123,%eax —— 立即数是以$开头的十六进制数值。直接访问指定的内存地址(0x123)中的数据然后赋给%eax
变址寻址
大多数指令都可以直接访问内存地址
作业
1冯诺依曼体系结构:即具有存储程序的计算机体系结构
目前大多数拥有计算和存储功能的设备(智能手机、平板、计算机等)其核心构造均为冯诺依曼体系结构从硬件来看:CPU与内存通过主线连接,CPU上的IP(可能是16、32、64位)总指向内存的某一块区域;IP指向的CS(代码段)也在内存中;CPU总是执行IP指向的指令。
从软件来看:API(应用程序编程接口,与编程人员)与ABI(程序与CPU的借口界面) 是两个比较重要的软件接口
2. x86(32位)的寄存器中,低16位作为16位register
3.堆栈段寄存器有EBP(堆栈基址寄存器)和ESP(堆栈顶指针寄存器)。
4 .64位CPU:其实与32位在核心机制上差别不大,64位的机器中,寄存器以RXX表示
5. 常见汇编指令
后缀的b,w,l,q分别代表8,16,32,64位以%标识的寄存器寻址不与内存“打交道”
直接寻址&立即数寻址
movl $0x123,%eax —— %eax=0x123
movl 0x123,%eax —— 立即数是以$开头的十六进制数值。直接访问指定的内存地址(0x123)中的数据然后赋给%eax
变址寻址
movl 4(%ebx),%edx//edx = *(inet_32 *)(ebx+4),即ebx的值加4之后作为一个地址,将其指向的数据赋给%edx
大多数指令都可以直接访问内存地址
作业
汇编一个简单的
C
程序分析其汇编指令执行过程: 编译结果:
删除掉以点(.)开头的指令之后,得到干净完整的汇编指令如下:
g: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax addl $6, %eax popl %ebp ret f: pushl %ebp movl %esp, %ebp subl $4, %esp movl 8(%ebp), %eax movl %eax, (%esp) call add leave ret main: pushl %ebp movl %esp, %ebp subl $4, %esp movl $6, (%esp) call f addl $1, %eax leave ret
分析:
总结: 首先,因为是跟新电脑的磨合期解聘工具没找着,图片怎么也旋转不过来请谅解。
对“计算机是如何工作的”的理解:
我眼中的计算机是一个非常听话,中规中矩的孩子,一步步按照命令来执行,犯的错误也很少,不会耍小聪明走捷径,除非指出来。但要做到这一点就需要他的五脏六腑来协调工作。储存设备给予他空间去存储各种东西,指令负责指挥各项操作,就像人体的器官和血液一样,互相互利共生。 最后,这一学期请老刘男神多多指教啦! 李辰希 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
相关文章推荐
- 计算机网络17--Email应用
- linux(hadoop)设置网络
- 2-1-单链表顺序存储结构-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
- HTTP协议详解篇(待续)
- TCP协议中的三次握手和四次挥手
- hdu 3338 Kakuro Extension(网络流dinic邻接表实现)
- 面试之数据库算法http://www.newsmth.net/nForum/#!article/Algorithm/37574?p=1
- OSI七层与TCP/IP四层模型
- Python计算机视觉:第七章 图像搜索
- Python计算机视觉:第六章 图像聚类
- 计算机网络——3.网络协议工作原理
- HTTP协议概念篇
- 计算机网络16--Web应用
- Python计算机视觉:第二章 图像局部描述符
- Python计算机视觉:第一章 图像处理基础
- Python计算机视觉:安装
- 网络安全基本概念
- 计算机是如何解读高级语言的
- poj 1273 Drainage Ditches 经典网络流 Dinic算法
- atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener