深入理解计算机系统-第3章程序的机器表示(一)
2014-10-21 00:12
639 查看
现在对于程序员,可能很少要求能够写汇编代码。但是能看懂汇编代码,在一些优化,调试场合下还是很有用的。能够更好的理解C语言对于机器语言的抽象。
在这篇文章中,主要摘录一些要点:
1. 机器代码为字节序列编码的低级操作。
2. 汇编代码是机器代码的文本表示。
3. Intel 32位的指令集(机器码)称为IA32(Intel Architecture 32-bit)。
4. IA32相关的寄存器:
PC(程序计数器)-- %eip : 要执行下一条指令的存储器地址。
8个整数(双字)寄存器文件:
%eax, %ecx, %edx, %ebx, %esi,. %edi, %esp, %ebp ---32位
%ax, %cx, %dx, %bx, %si, %di, %sp, %bp --- 16位
%ah, %al, %ch, %cl, %dh, %dl, %bh, %bl --- 8位
条件吗寄存器。
浮点寄存器。
5. C语言中do {} while, while for 的汇编实现(GCC)都是通过把while 和 for 转换成do {} while。
6. 对于C言语的程序优化可以使用条件传送指令来提高条件分支的执行:
数据的条件转移--条件数据传送:把所有分支的计算结果都执行,然后根据分支判定返回相应的结果。(使CPU的流水线填充的更满)
控制的条件转移--条件控制转移:预测可能执行的分支,提前执行。但是预测失败,会有惩罚。(丢弃之前运行的分支工作)
GCC更倾向于条件控制转移。
7. C语言中swich语句转化为汇编语言时,有时会使用跳转表。跳转表是一个数组,里面存放着可能执行的代码段地址。case的条件比较多,
case值之间的跨度较小,编译器就会选择使用跳转表。
在这篇文章中,主要摘录一些要点:
1. 机器代码为字节序列编码的低级操作。
2. 汇编代码是机器代码的文本表示。
3. Intel 32位的指令集(机器码)称为IA32(Intel Architecture 32-bit)。
4. IA32相关的寄存器:
PC(程序计数器)-- %eip : 要执行下一条指令的存储器地址。
8个整数(双字)寄存器文件:
%eax, %ecx, %edx, %ebx, %esi,. %edi, %esp, %ebp ---32位
%ax, %cx, %dx, %bx, %si, %di, %sp, %bp --- 16位
%ah, %al, %ch, %cl, %dh, %dl, %bh, %bl --- 8位
条件吗寄存器。
浮点寄存器。
5. C语言中do {} while, while for 的汇编实现(GCC)都是通过把while 和 for 转换成do {} while。
6. 对于C言语的程序优化可以使用条件传送指令来提高条件分支的执行:
数据的条件转移--条件数据传送:把所有分支的计算结果都执行,然后根据分支判定返回相应的结果。(使CPU的流水线填充的更满)
控制的条件转移--条件控制转移:预测可能执行的分支,提前执行。但是预测失败,会有惩罚。(丢弃之前运行的分支工作)
GCC更倾向于条件控制转移。
7. C语言中swich语句转化为汇编语言时,有时会使用跳转表。跳转表是一个数组,里面存放着可能执行的代码段地址。case的条件比较多,
case值之间的跨度较小,编译器就会选择使用跳转表。
相关文章推荐
- 深入理解计算机系统 ——第三章 程序的机器级表示
- 程序的机器级表示 读深入理解计算机系统
- 深入理解计算机系统之旅(三)程序的机器级表示
- 深入理解计算机系统--程序的机器级表示
- 深入理解计算机系统(笔记):程序的机器级表示
- 深入理解计算机系统——第03章——程序的机器级表示
- 深入理解计算机系统(三)之程序的机器级表示
- 深入理解计算机系统(第二版)----之三:(一:程序的结构和执行)程序的机器级表示
- 深入理解计算机系统:程序的机器级表示
- 3、深入理解计算机系统笔记:程序的机器级表示
- 深入理解计算机系统(第二版)----之二:(一:程序的结构和执行)信息的表示和处理
- 深入理解计算机体系结构-----之 第三章 程序的机器级表示
- <深入理解计算机系统> 通过程序的机器级表示来理解函数栈
- 计算机系统巡回赛的深入理解(三)机器级表示计划
- Learning by doing 二 深入理解计算机系统(CS:APP)一信息表示
- 深入理解计算机系统(1.2)---hello world的程序是如何运行的
- 深入理解计算机系统之旅(二)信息在计算机中的表示和处理
- 深入理解计算机系统第五章--编写高效程序
- 深入理解计算机系统:优化程序性能
- *13、深入理解计算机系统笔记:程序链接(2)