深入理解计算机系统
hychyc759
这个作者很懒,什么都没留下…
展开
-
【深入理解计算机系统】C语言编译过程
C语言的编译过程分为四个阶段:预处理、编译、汇编链接,其过程如下图所示,其中hello.c是一个输出字符串“hello world”的C程序。预处理阶段:预处理器(cpp)根据以字符#开头的命令,修改原始的C程序,得到一个新的C程序,保存为预编译文件,以.i作为文件扩展名。编译阶段:编译器(ccl)将预编译文件转换成汇编语言程序,保存为汇编文件,文件扩展名为.s。汇编阶段:汇编器(as)将汇编文件转换为机器码,生成可重定位目标文件,文件扩展名为.o,这是一个二进制文件。链接阶段:链接器(ld原创 2020-06-20 11:02:02 · 235 阅读 · 0 评论 -
【深入理解计算机系统】虚拟地址空间
虚拟地址空间由大量准确定义的区构成,每个区都有专门的功能,这些区又分为两大部分:内核空间和用户空间。虚拟地址空间的构成如下图所示:程序代码和数据:对所有进程来说,代码是从同一固定地址开始的,紧接着的是和全局变量相对应的数据位置。代码和数据区是按照可执行目标文件的内容初始化的。堆:代码和数据区后是运行时堆。当使用malloc和free这样的C标准库时,堆可以在运行时动态地扩展和收缩。共享库:大约在地址空间的中间部分是一块用来存放像C标准库函数和数学库这样的共享库的代码和数据的区域。栈:位于虚拟原创 2020-06-21 15:32:33 · 463 阅读 · 0 评论 -
【深入理解计算机系统】IEEE浮点表示
一、基本表示 在IEEE标准中,一个浮点数表示如下:V=(−1)s×M×2EV=(-1)^s\times M\times 2^EV=(−1)s×M×2E其中:s表示符号(sign),s=1表示负数,s=0表示正数;M表示尾数(significand);E表示阶码(exponent)。 在单精度浮点格式中,符号位、阶码和尾数的位数分别为1、8、23;在双精度浮点数中,符号位、阶码和尾数的位数分别为1、11、52。二、三种情况1.规格化值 当阶码的编码不全为0且不全为1时,该浮点数原创 2020-07-07 10:24:46 · 687 阅读 · 0 评论