之前一直不清楚编译原理到底讲的什么,后面听了老师讲解才明白,原来是这么回事,为了方便以后的查找,所以今天把它记了下来。
编译原理分为四步 :
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
本文介绍了编译原理的基本流程,包括预处理、编译处理、汇编处理和链接四个阶段,并详细解释了每个阶段的任务及执行命令。此外,还阐述了程序执行过程中内存的三个主要部分:堆栈、data和code。
1万+

被折叠的 条评论
为什么被折叠?



