前言
第一章可以理解为后面几个章节的简单介绍,从程序如何从一个.c源文件编译成可执行文件,到计算机的组成。我只是想把我认为需要记录的记录一下,可能这个笔记不是特别全面。
一、.c文件编译成可执行文件的流程
我们编写好hello.c源文件,利用gcc -o hello hello.c命令进行编译的过程中,会发生如下过程:
1.预处理阶段:预处理器根据以字符#开头的后面的命令,修改咱们写的源程序,得到hello.i文件。
2.之后编译器把hello.i文件编译成汇编程序,得到hello.s文件。
3.汇编器把hello.s文件汇编成hello.o文件。
4.开始链接:把我们开头引入的一些库文件整合到我们的hello.o中,比如我们调用了printf函数,就要把printf.o与hello.o进行合并。链接分为动态链接和静态链接,这个后面的章节会讲到。
二、存储系统结构图
还有一个需要记录的就是这张图片了,能够帮助我们了解寄存器、缓存、主存之间的关系,需要注意的是在多核cpu中,每一个核心都有自己的寄存器、L1、L2高速缓存,之后共用L3高速缓存。