【发布时间】:2010-10-25 03:01:58
【问题描述】:
我主要对流行且广泛使用的编译器感兴趣,例如 gcc。但如果不同的编译器做的事情不同,我也想知道。
以gcc为例,它是直接将C编写的短程序编译成机器代码,还是先将其翻译成人类可读的汇编,然后才使用(in-内置?)汇编程序将汇编程序翻译成二进制,机器代码——对CPU的一系列指令?
使用汇编代码创建二进制可执行文件是一项非常昂贵的操作吗?还是相对简单快捷的事情?
(假设我们只处理 x86 系列处理器,并且所有程序都是为 Linux 编写的。)
【问题讨论】:
-
相关:Does a compiler always produce an assembly code? - 不,提供完整工具链的大型主流 C 编译器通常直接生成机器代码,尤其是那些(与 GCC 不同)仅针对少数 ISA/目标文件格式的编译器。但是,是的,具有较小开发团队的编译器通常将目标文件处理留给现有的汇编器。也相关:What do C and Assembler actually compile to?
标签: assembly gcc compilation compiler-construction