码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2016-02-27 23:27:59      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

计算机是如何工作的

 

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内核分析》第一周 计算机是如何工作的?

标签:

原文地址:http://www.cnblogs.com/20135201lcx2/p/5223769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!