标签:
视频
一. 存储程序计算机工作模型
冯诺依曼体系结构:存储程序计算机
从硬件角度: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