博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《程序员自我修养》阅读笔记-编译和链接
阅读量:5781 次
发布时间:2019-06-18

本文共 466 字,大约阅读时间需要 1 分钟。

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

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

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

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

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

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

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

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

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

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

转载地址:http://ghcyx.baihongyu.com/

你可能感兴趣的文章
2016/08/25 The Secret Assumption of Agile
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>
搭建vsftpd服务器,使用匿名账户登入
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
人人都会深度学习之Tensorflow基础快速入门
查看>>
ChPlayer播放器的使用
查看>>
js 经过修改改良的全浏览器支持的软键盘,随机排列
查看>>
Mysql读写分离
查看>>
Oracle 备份与恢复学习笔记(5_1)
查看>>
Oracle 备份与恢复学习笔记(14)
查看>>
分布式配置中心disconf第一部(基本介绍)
查看>>
Scenario 9-Shared Uplink Set with Active/Active uplink,802.3ad(LACP)-Flex-10
查看>>
UML类图中的六种关系
查看>>
探寻Interpolator源码,自定义插值器
查看>>
一致性哈希
查看>>
mysql(待整理)
查看>>
Web日志安全分析工具 v2.0发布
查看>>
JS重载
查看>>
python2和python3同安装在Windows上,切换问题
查看>>