经过十多年的C/C++编程,我发现一个模式 - 非常优秀的程序员往往精通编译器的内部知识。
我是一名相当不错的程序员,拥有一些编译器的“迷信”,所以我想重新学习并从基础开始。
是否有人可以推荐在线资源或喜爱的书籍?我特别关注于C/C++编译、优化、GCC和LLVM方面的知识。
经过十多年的C/C++编程,我发现一个模式 - 非常优秀的程序员往往精通编译器的内部知识。
我是一名相当不错的程序员,拥有一些编译器的“迷信”,所以我想重新学习并从基础开始。
是否有人可以推荐在线资源或喜爱的书籍?我特别关注于C/C++编译、优化、GCC和LLVM方面的知识。
从龙书开始学起...(注重代码优化和代码生成)
然后写一个类似Decaf或Cool这样的教育性编程语言的玩具编译器,你可以使用解析器生成器(如lex和yacc)来简化前端的工作(以便更加专注于重要内容)...
最后阅读gcc内部书籍并浏览gcc源代码。
lcc
}}编译器的源代码。设计和实现的解释与代码混合在一起。这不是初学者的第一本书,但仔细研究后会收到回报,你可以花35美元买一本二手书。lcc
的更长介绍,请参见 在 Linux 上快速编译 C。
lcc 网页上也有很多好的教材链接。然而,我不知道有没有我真正喜欢的入门教材。
P.S. 抱歉你在大学被骗了。
根据您想了解的具体内容,您应该看一下管道和过滤器模式,因为据我所知,这种模式(或类似的模式)在过去几年中被用于许多编译器。
当我的编译器知识不太过时时,它的工作方式如下:
将源代码解析为符号表示
清理符号表示,进行一些规范化处理
基于某些规则优化符号树
根据符号树编写可执行代码
当然还需要解决依赖关系等问题。
当然,查看gcc或javac源代码可能有助于更详细地了解。