编译原理简单讲解

之前一直不清楚编译原理到底讲的什么,后面听了老师讲解才明白,原来是这么回事,为了方便以后的查找,所以今天把它记了下来。

编译原理分为四步 :

1:预处理       头文件处理宏定义处理条件变量处理特殊标志符处理去掉注释

执行的代码与生成的文件:gcc   -E   *.c    -o     *.i

2:编译处理         对词法语法语义进行分析,是否正确,最后生成符号

执行的代码与生成的文件:gcc   -S    *.i     -o      *.s

3:汇编处理         将编译处理后的*.s文件翻译成二进制代码

执行的代码与生成的文件:gcc    -c    *.s    -o    *.o

4:链接       找符号确定data与code段的地址

执行代码与生成的文件:gcc    -o    *    *.o

编译完成后就是执行,在执行的过程中才确定堆栈的地址                                                                                                                                  


内存分三段

                      1:   堆栈

                      2 :  data {                                                                                                                                         

                                                 BSS(未初始化的全局变量)

                                                 初始化的全局变量

                                                 静态变量

                                                 只读区   

                                        }

                      3:code

3G     栈

2G

1G    堆
        data
       code
0

                                                                                                                                                                                                                                        

你可能感兴趣的:(编译原理简单讲解)