从编译器的角度看C ++

时间:2012-01-31 12:36:45

标签: c++

  

可能重复:
  What are the stages of compilation of a C++ program?

我发现了解如何编译给定的软件语言对于理解最佳实践和充分利用该语言至关重要。对于C ++来说,这似乎是双重的。从编译器的角度来看,是否有一个很好的引物或文档(对于凡人)来描述C ++? (显然每个编译器都有一点不同。)

我认为在Stroustrup的书的开头可能会有这样的东西。

4 个答案:

答案 0 :(得分:3)

我个人喜欢这个。完全不是编译器的眼睛视图,但它告诉你C ++程序“引擎盖下”发生了什么。

Inside the C++ Object Model

答案 1 :(得分:1)

这取决于你想要获得什么。我发现Itaium ABI是一个很好的文档,可以理解C ++对象模型的一些复杂性。它不会处理优化等问题,但我发现理解虚拟继承可以实现的方式非常有用,或者像构造函数和析构函数那样看起来更简单的东西(你知道编译器最多可以生成3个)你提供的每个构造函数的版本?2个析构函数?)

免责声明:文件非常密集,您可能需要不止一次地浏览这些部分,至少我做过。而且你需要很好地理解语言的语义,才能真正理解为什么解决方案如此复杂。

答案 2 :(得分:0)

答案 3 :(得分:0)

我不知道任何这样的书,但如果你想了解编译器如何处理C ++,最简单的方法是编写一些代码并让编译器吐出带注释的汇编列表并检查。这将让您了解特定编译器如何处理代码。

你也可以参与一个编译器项目,也许像llvm的clang项目?