0

为了准确理解在编写 C++ 时“幕后”发生了什么,您会推荐哪些文档?

到目前为止,我有:

  • GNU C++ 编译器文档(我认为这会很好地了解实际发生的情况)
  • C++ ABI(?) 规范

图书:

  • C++ 对象模型内部
  • 迈耶斯有效系列
4

3 回答 3

1

对于真正的底层理解,您应该熟悉 G++ 源代码。编译器代码会告诉你很多关于语言的信息。

对于较低级别的理解,您应该熟悉最新的 C++ 标准 (C++11)。

于 2012-10-10T11:45:24.307 回答
1

使用编译到汇编器:g++ -fverbose-asm -S在 GCC 的情况下,以及在其他编译器中的 kindred 切换。这就像它得到的“引擎盖下”一样接近。

于 2012-10-10T11:47:29.300 回答
1

我首先学习了 x86 汇编指令集和指令时钟时序。一旦你知道了这一点,你就会知道编译器实际上将你的代码转换成什么,你就会知道它可以做什么和不能做什么。从那里,如果我对一段特定的代码感兴趣,我会从编译器获取汇编器输出,并尝试各种编码方式。多年来,我发现了一些事情...... 1) 编译器非常擅长优化,通常即使以几种不同的方式编码一些东西,最终得到相同的汇编输出,2) 我经常对内联多少感到惊讶编译器确实如此,并且 3) 我经常对有时很少的 C++ 代码会导致大量的汇编输出感到惊讶。因此,当您复制多重继承 C++ 对象时,您 你会意识到那是多么昂贵,当你编写小的实用方法来保护对象数据时,你会意识到这个工具是多么的便宜。狩猎愉快。

于 2012-10-10T11:50:04.940 回答