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

第一周 计算机是如何工作的

时间:2016-02-27 00:53:47      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

视频

一.   存储程序计算机工作模型

冯诺依曼体系结构:存储程序计算机

从硬件角度:CPU上的IP总指向内存的某一块区域,CPU执行其所指向的指令

从程序员角度:内存保存指令和数据,CPU解释执行

二.   X86汇编基础

通用寄存器:

 技术分享

段寄存器:

 技术分享

注:CPU实际取指令时根据cs:eip来准确定位一个指令

几种寻址方式

寄存器寻址(register):movl %eax,%edx

立即数寻址(immediate):movl $0x123,%edx

直接寻址(direct):movl 0x123,%edx

间接寻址(indirect):movl (%ebx),%edx

变址寻址(displaced):movl 4(%ebx),%edx

注: A&T汇编格式与Intel汇编格式不同,Linux内核使用A&T汇编格式

其他:

Eip寄存器不能被程序员直接修改,存在安全隐患,所以只能通过特殊指令间接修改

函数调用堆栈是由逻辑上多个堆栈叠加起来的

函数返回值默认存储在%eax寄存器中

三.   汇编一个简单的C程序分析其汇编指令执行过程

函数返回值默认存在eax寄存器返回给上级函数

汇编C代码并分析

1. main.c代码

 技术分享

2. 汇编代码

 技术分享

使用命令 gcc –S –o main.s main.c -m32编译成汇编代码

-S:仅汇编

-m32:生成32位的指令格式

3. 分析

 技术分享

 技术分享

 技术分享

 技术分享

总结

通过学习了第一周的课学到了一些的计算机的底层知识,是计算机工作原理的基础部分。计算机可抽象理解为由CPU和内存两部分组成,内存中存有指令和数据,CPU通过eip不断从内存中读取指令,并且将当前正在执行的程序的相关指令的数据都暂时保存在堆栈中以便于取用和计算,随着程序的执行,堆栈随之增减,直到程序运行结束,程序结果计算完成,堆栈中的相关数据也得到清空,相当于将程序变成了CPU上的指令流。

第一周 计算机是如何工作的

标签:

原文地址:http://www.cnblogs.com/20135305yg/p/5222155.html

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