《程序员自我修养》阅读笔记-编译和链接

把一个.c文件变成一个可执行文件(比如window下的.exe)大致分为四步:

1 预编译:这一步的输入为.c文件,输出为.i文件,做的事情是展开所有的include和define;

2 编译:这一步的输入为.i文件,输出为.as文件(汇编文件)。详细地说,分为五个步骤:

   (1)词法分析:将源代码分割成一系列记号,关键字、标识符之类;

   (2)语法分析:根据一些语法规则(这里就是c的语法)将词法分析的输出建立一棵语法树;

   (3)语义分析:分析语法树上的运算啊赋值啊之类的合不合法(比如两个指针相乘就是不合法的);

   (4)中间语言生成:生成中间代码(比如三地址码),然后可以在中间代码上做一些优化;

   (5)目标代码生成:将目标代码翻译成汇编,然后可以对汇编代码做一些优化。

3 汇编:这一步的输入为.as文件,输出为目标文件(比如window下就是.obj文件)。

4 链接:这一步的输入为很多目标文件,输出为可执行文件。链接主要做了两件事情:符号决议和重定位。符号决议用来确定一个变量或者函数到底是哪一个,重定位是确定符号的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值