many, many chore
This commit is contained in:
FallenYing
2023-07-28 09:30:17 +08:00
parent b043fd1d05
commit f501a6b993
33 changed files with 453 additions and 453 deletions

View File

@@ -1,16 +1,16 @@
# C 编译器干了什么
# 以 gcc 为例
## 以 gcc 为例
1、预处理,生成 .i 的文件[预处理器 cpp]
1、预处理生成 .i 的文件[预处理器 cpp]
2、将预处理后的文件转换成汇编语言, 生成文件 .s [编译器 egcs]
2、将预处理后的文件转换成汇编语言生成文件 .s [编译器 egcs]
3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器 as]
3、有汇编变为目标代码 (机器代码) 生成 .o 的文件[汇编器 as]
4、连接目标代码, 生成可执行程序 [链接器 ld]
4、连接目标代码生成可执行程序 [链接器 ld]
# 有啥用
## 有啥用
有一天你发现,某一段 C 语言只有几行,但是用了大量的魔法宏定义以及魔法操作以及神奇的元编程。
@@ -18,10 +18,10 @@
如果有一天你要学习汇编语言,或者说出现了在代码中看不出的 bug你可能需要翻译成.s 文件
# 了解更多
## 了解更多
当然不止如此,编译器还承担了优化的过程,有时候同一份代码,经过 O1 和 O2 不同优化可能最后代码都不一样。
推荐阅读
[http://www.ruanyifeng.com/blog/2014/11/compiler.html](http://www.ruanyifeng.com/blog/2014/11/compiler.html)
[编译器的工作过程](http://www.ruanyifeng.com/blog/2014/11/compiler.html)