码迷,mamicode.com
首页 > 其他好文 > 详细

计算机是如何工作的? ----李泽源

时间:2016-02-28 21:31:59      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

李泽源  

《Linux内核分析》MOOC课程 http://mooc.study.163.com/course/USTC-1000029000#/info

 知识准备

冯诺依曼体系结构

核心思想

1.冯诺依曼是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。

2.采用二进制作为计算机数值计算的基础,以0、1代表数值。不采用人类常用的十进制计数方法,二进制使得计算机容易实现数值的计算。

3.程序或指令的顺序执行,即预先编好程序,然后交给计算机按照程序中预先定义好的顺序进行数值计算。

汇编语言的五种寻址模式

·        寄存器寻址 registermode: %寄存器  例如:%edx 访问寄存器edx

·        立即寻址 immediate: $数字   例如:$0x123 数值0x123

·        直接寻址 direct:数字   例如:0x123访问地址0x123指向的内存

·        间接寻址 indirect: (%寄存器) (%ebx) 例如:访问寄存器ebx中的地址指向的内存

·        变址寻址 displaced:偏移量(%寄存器) 4(%ebx):访问寄存器ebx中的地址再加4指向的内存;

几个重要的汇编指令

Example instruction

What it does

Pushl %eax

Subl $4, %esp   //栈顶指针减4,栈在向下生长一个位置

Movl %eax, (%esp) //将eax中的值放入栈顶指针指向的内存位置

Popl %eax

Movl (%esp), %eax //从栈顶指针指向的内存中的值放入eax中

Addl $4, %esp //栈顶指针加4,栈在向上收缩

Call 0x12345

Pushl %eip //ip压栈

Movl $0x12345, %eip //将0x12345放入eip中

Ret

Popl %eip //ip出栈

 

命令行截图:

技术分享

生成的汇编代码截图:

技术分享

图解代码:

 技术分享

计算机是如何工作的?

用户将编制好的程序通过输入设备送入计算机, 放在存贮器里保存起来,通过输 入设备向计算机发出执行程序的命令。 于是,在控制器的控制下,计算机便按照程序要求自动地进行工作。 计算机工作时,控制器从存贮器取出一条指令程序, 分析这条指令要求计算机进行哪一种操作,然后执行所规定的操作, 执行完一条指令后,再从存贮器中取出下一条指令,再分析和执行…… 这样重复进行,直到程序执行完毕。

 

计算机是如何工作的? ----李泽源

标签:

原文地址:http://www.cnblogs.com/jorilee/p/5224672.html

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