高性能计算——编译
文章目录
学习汇编语言的主要好处不在于用它编写程序,而便于理解在代码编译执行过程中发生的事情及其对性能的影响。
确实有会存在一些比较少见的情况,我们需要切换到手写汇编以获得最大性能,但大多数时候,编译器能够自己生成接近最优的代码。当它们做不到这一点时,通常是因为程序员对问题的了解超出了源代码所能推断的范围,但未能将这些额外信息传达给编译器。
在这一部分中,我们将讨论如何让编译器准确执行我们想要的操作,并收集有助于进一步优化的有用信息。
编译的几个阶段(Stages of Compilation)
在直接跳转到编译器优化(这一部分的主题)之前,让我们先简要回顾一下“大局”。跳过一些相对枯燥的部分,C程序转换为可执行文件大致分为四个阶段:
- 预处理:展开宏,从头文件中提取包含的源代码,并从源代码中去除注释等。例如:
gcc -E source.c
(将预处理的源输出到标准输出)。 - 编译:解析源代码,检查语法错误,将其转换为中间表示,进行优化,最后翻译成