想学习llvm,除了编译原理,还需要哪些知识;
另外怎么看llvm的代码?
把2004年Lattner的那篇论文翻出来,看一看,理解一下整体架构。如果你是想搞编译前端,就去啃clang的源码,什么词法语法以及AST都有。而且还有一些很方便的接口供你使用,什么Rewriter,RecursiveASTVisitor啊,什么ASTMatcher啊等等。如果你想搞静态代码分析,就去看clang static analyzer的源码。如果你想搞编译后端,什么数据流分析,代码优化啊,代码生成,以及一些“黑科技”就去看LLVM的源码。
youtube有历年开发者会议的视频,llvm官网上也有llvm相关的paper,文档再加代码应该差不多了。关键是要找到自己要深入研究的部分,一口吃个大胖子,是很难的。
可以参考一下这个问题,我觉得底下有几个回答比较靠谱.
起初我也准备看LLVM源码,因为做一个小项目中要用,后来发现用clang这个编译器前端就基本能搞定了,主要也就看clang相应的文档去了(libClang,ASTMatcher,RecursiveAST).
LLVM入手的话还是照着官网上,你所安装的LLVM对应版本的教程来吧:万花筒:用LLVM实现一门语言