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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20135201李辰希《Linux内核分析》第一周 计算机是如何工作的?相关的知识,希望对你有一定的参考价值。

计算机是如何工作的

 

1冯诺依曼体系结构:即具有存储程序的计算机体系结构

目前大多数拥有计算和存储功能的设备(智能手机、平板、计算机等)其核心构造均为冯诺依曼体系结构

  1. 从硬件来看:CPU与内存通过主线连接,CPU上的IP(可能是16、32、64位)总指向内存的某一块区域;IP指向的CS(代码段)也在内存中;CPU总是执行IP指向的指令。
  2. 从软件来看:API(应用程序编程接口,与编程人员)与ABI(程序与CPU的借口界面) 是两个比较重要的软件接口

 

2. x86(32位)的寄存器中,低16位作为16位register

3.堆栈段寄存器有EBP(堆栈基址寄存器)和ESP(堆栈顶指针寄存器)。

4 .64位CPU:其实与32位在核心机制上差别不大,64位的机器中,寄存器以RXX表示

5. 常见汇编指令

  1. 后缀的b,w,l,q分别代表8,16,32,64位
  2. 以%标识的寄存器寻址不与内存“打交道”
  3. 直接寻址&立即数寻址
    1. movl $0x123,%eax —— %eax=0x123
    2. movl 0x123,%eax —— 立即数是以$开头的十六进制数值。直接访问指定的内存地址(0x123)中的数据然后赋给%eax
  4. 变址寻址

    movl 4(%ebx),%edx//edx = *(inet_32 *)(ebx+4),即ebx的值加4之后作为一个地址,将其指向的数据赋给%edx
    
  5. 大多数指令都可以直接访问内存地址

作业

汇编一个简单的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内核分析》第四周 扒开系统调用的“三层皮”

20135201李辰希 《Linux内核分析》第五周 扒开系统调用的“三层皮”(下)

《linux内核分析》 第一周

Linux内核分析第一周——计算机是如何工作的

《Linux内核分析》课程第一周学习总结