您的位置:首页 > 理论基础

20135201李辰希《Linux内核分析》第一周 计算机是如何工作的?

2016-02-27 22:37 429 查看
计算机是如何工作的

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: