《CSAPP》 -- 处理器体系结构
阅读这篇文章必须要对汇编码有足够的了解,如果你对 IA32 汇编码还不够了解,可以先看看这篇文章:程序的机器级表示
Y86 指令集体系结构
Y86 指令集基本上是 IA32 指令集的一个子集。这个指令集就是我们处理器实现的目标。如下图:
1 | $ gcc -01 -o p p1.c p2.c |
使用了 gcc 命令来编译,也可以简单写作:cc。
优化层级为 1,1 级是最低的,层级越高程序优化越好,但增加了编译时间,也使调试变得更难,且跟源程序差异很大不便于理解。
编译的流程是:
#include、#define、#if、#else、#elif、#ifdef、#endif等预编译指令替换掉。.c源文件编译成.s的汇编代码文件。.o,目标文件已经是机器码了,只是没有填入全局变量的地址。浮点数的作用:区别于整形数,用来表示小数。可以用来表示很大的数,或者非常接近 0 的小数,或者近似的做实数计算,浮点数的一般形式:
IEEE(pronounced “Eye-Triple-Eee”)浮点数标准 是行业内公认的标准。
rounding:when a number cannot be represented exactly in the format and hence must be adjusted upward or downward。可以翻译为:舍入。
十进制的小数表示:
相应的,二进制也可以写成这种形式: