20135201李辰希《Linux内核分析》第一周 计算机是如何工作的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20135201李辰希《Linux内核分析》第一周 计算机是如何工作的?相关的知识,希望对你有一定的参考价值。
计算机是如何工作的
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
以上是关于20135201李辰希《Linux内核分析》第一周 计算机是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章
20135201李辰希《Linux内核分析》第三次 构造一个简单的Linux系统OS
20135201李辰希 《Linux内核分析》第四周 扒开系统调用的“三层皮”