编译原理简单讲解

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

编译原理分为四步 :

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

                                                                                                                                                                                                                                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值