理解计算机系统3
2013-12-13 18:27
155 查看
二天深入理解计算机系统(三)
程序的机器级表示
最近因为在忙我们数据仓库的开源工作,要是一个C++系统开源,工作量实在是大,说起来都是泪(累)。以及生活中的一些事,找房子什么的,学习东西的时间比较少,这个系列很长时间没有更新,争取年前搞完,废话少说,直接介绍知识点。1 如何产生汇编代码
gcc -O1 -S code.cobjdump -d code.o
objdump -d code
2 数据格式
Intel用“字”表示16位数据类型,32位数为“双字”,64位数为“四字”3 IA32位寄存器
4 数据传送指令的限制
两个操作数不能都指向存储器位置5 直接跳转与间接跳转的区别
如:jmp .L1.L1:
popl %edx
这就就是直接跳转
jmp *%eax
用寄存器%eax中的值作为跳转的目标。条件跳转只能是直接跳转
6 if和switch的区别
Switch通过跳转表来实现,跳转表的优点是执行开关语句的时间与开关情况的数量无关。跳转表更加高效。If通过条件跳转实现。7 栈帧结构
8 指针差
结构值是除以数据类型大小后的值9 最小化缓存区溢出攻击方法
随机化、栈保护和限制那部分存储器存储可执行代码10 IA32和x86-64通用寄存器对比
11 x86-64特性
1)指针和长整数是64位长2)通用目的寄存器从8个扩展到16个
3)许多程序状态都保存在寄存器中,而不是在栈上。整形和指针过程参数(最多6个)通过寄存器传递。
4)对栈位置的引用相当于栈指针。大多数函数在调用开始时分配所需要的整个栈存储,在过程开始时通过减小栈指针,并在调用过程中保持栈指针指向固定位置。
相关文章推荐
- 8.0 异常控制流 第8章 《深入理解计算机系统 原书第2版》
- 深入理解计算机系统
- 深入理解计算机系统第二章家庭作业
- 深入理解计算机系统 1
- 深入理解计算机系统 笔记(二)
- 深入理解计算机系统第二版习题解答CSAPP 2.3
- 深入理解计算机系统(2.5)------C语言中的有符号数和无符号数以及扩展和截断数字
- 第7周 深入理解计算机系统(第二版) 例题2.3
- 深入理解计算机系统之存储系统
- 19、深入理解计算机系统笔记,虚拟存储器,基本原理(1)
- 深入理解计算机系统-2(信息存储)
- CS:APP3e 深入理解计算机系统_3e Y86-64模拟器指南
- 深入理解计算机系统 家庭作业2.68
- CSAPP深入理解计算机系统实验2-二进制炸弹(Windows版本)
- 深入理解计算机系统-第3天
- ubantu 配置<<深入理解计算机系统>>的 C语言编程环境
- 深入理解计算机系统_3e 第二章家庭作业 CS:APP3e chapter 2 homework
- 深入理解计算机系统第六章--存储器层次结构与性能
- 链接器解析外部符号的过程 深入理解计算机系统 P475 注:在链接时的注意事项
- 深入理解计算机系统笔记1