LLVM每日谈之十一 编译器相关学习资料推荐

作者:snsn1984
近来碰到一些想学习LLVM但是已经把编译原理的知识还给老师的朋友,让帮忙推荐一些学习资料,我就把手头有的一些资料,大都是自己读过的一些资料整理一下,列出来,希望对大家有所帮助。

1、《Compilers---Principles,Techniques, and Tools》

没错,这就是传说中的龙书,虽然无数次被人推荐,也无数人说能不能换点别的推荐,但是它还是当之无愧的首选。网上可以找到PDF的电子版,中英文的都有。如果真是打算好好的学编译器,建议买本英文版的,读的时候,不明白的再看看中文版的电子版。因为如果以中文版为主的话,后续你面对编译器的源码,可能会有一些东西对不上号。读的是英文版的就会好多了。

2、www.coursera.org

这是一个公开课的网站,上面有很多优秀的公开课,都是世界著名大学的。其中有一门课程叫做《Compiler》讲的特别不错,如果跟着这个课程学习的话,再辅以龙书,效果会很不错,同时也会让你觉的读龙书没什么难得,还有一种拨云见日的感觉。

3、《程序员的自我修养》

关于这本书的介绍,网上有很多,大家可以看下。这本书的立足点确实是以往很少有资料介绍的,但是并不代表不重要。如果你要是想了解程序真正的从源码到执行,这本书的立足点的那些环节是必不可少的。

4、《Linkers and Loaders》

这本书是链接和装载方面最为权威的一本书,也十分的完整,但是内容有点偏旧。这本书读的不读,3书中的作者也推荐了这本书,覆盖领域和3中的大致相同。有精力的同学可以看一下。

5、《深入理解计算机系统》

这本书的经典就不用太多的言语介绍了。这本书中的第七章,主要介绍链接部分的内容,和3、4的覆盖范围有些相似,如果时间有限,建议可以直接读这本书的第七章。

       这些资料中3、4、5覆盖的范围主要在链接和加载上面,这是一般的讲编译的书不会覆盖的,但是真正的编译器不光进行了编译,必然包含一个链接的过程,所以这个过程对了解整个的编译器的工作流程有着相当重要的作用。所以还是建议学习一下这方面的知识。

因为本人读过的书不多,这里也列一个别人的推荐书单:

http://www.lingcc.com/2012/05/16/12048/

这个书单里也列了一些别人的书单,我想这些应该够用了。

--------------------------------------------------------------------------转载请注明出处---------------------------------------------------------------------------------------------

时间: 2024-10-28 07:38:25

LLVM每日谈之十一 编译器相关学习资料推荐的相关文章

LLVM每日谈之七 Clang

作者:snsn1984         官方介绍Clang是LLVM native的一个面向C/C++/Objective-C的编译器,目标是要提供一个编译非常快的编译器.他们宣称在Debug模式下编译Objective-C比GCC快3倍.至于是否能比GCC快这么多,总有人去做对比,大家可以搜索下,好像确实快了些. Clang一般被说是LLVM的一个前端.关于前端的定义,大家可以从LLVM每日谈之二里面看到前端在整个LLVM体系中的位置.Clang当初的定位就是要做下一个十年中一个伟大的前端,这

LLVM每日谈之四 Pass初探

作者:snsn1984 LLVM 的Pass框架是LLVM系统的一个很重要的部分.每个Pass都是做优化或者转变的工作,LLVM的优化和转换工作就是由很多个Pass来一起完成的. 所以按照我的理解,Pass就是LLVM系统转化和优化的工作的一个节点,每个节点做一些工作,这些工作加起来就构成了LLVM整个系统的优化和转化.Pass架构这么做的话,可重用性非常好,你可以选择已有的一些Pass,自己去构建出自己想要的优化和转化效果.并且自己也可以重新写Pass去做自己想要的优化和转变,因为每个Pass

java-有人有关于内置对象相关学习资料和视频吗?

问题描述 有人有关于内置对象相关学习资料和视频吗? 面试中关于内置对象会问到什么内容?又需要看些什么 怎么回答呢?有人有相关视频看吗希望会的亲们认真帮我解答 谢谢亲们 解决方案 有,你可以去传智播客那里看一看

LLVM每日谈之十三 使用LLVM自带的PASS

作者:snsn1984 PS:最近一段时间,投入在LLVM上的时间有些减少.差点把对它的研究断掉,今天开始继续.对LLVM的研究需要很长一段时间的坚持不懈才可以彻底搞明白. 前面已经介绍过如何写自己的PASS,并且也针对一个简单的PASS进行了分析和介绍.相信大家也可以从LLVM源码中找到很多的PASS,这些PASS太多,他们每个到底是做什么用?如何去调用这些系统已经有的PASS?这就是这次每日谈要关注的问题. 在文档 http://llvm.org/docs/Passes.html 中,列出了

LLVM每日谈之二十一 一些关于编译器和LLVM/Clang的代码

作者:史宁宁(snsn1984) 自己收集了一些LLVM/Clang的代码,并且自己也在一点一点的写一些LLVM/Clang以及编译器的代码,在这里把这些代码库分享出来,欢迎大家交流探讨. 1.crange https://github.com/shining1984/crange 这是一个python写的调用libclang去定位和交叉检索C/C++源码的工具.这个工具不是我写的,我给fork过来了,方便自己加一些自己的代码. 2. libclang-examples https://gith

LLVM每日谈之十七 LLVM/Clang的学习的思考

        之前一直关注LLVM和基于LLVM的工程(工具)多一些,对Clang和基于Clang的工具关注不是很多.这就导致了一个很严重的问题,觉的如果要深入理解Clang就必须要去读Clang的源码,这个想法不是不对,但是这不是唯一的路,而且Clang的源码太多,容易让人无法坚持下去,也容易让人无从下手.         了解了Clang的一些工具之后,觉的这些工具是一个很好的切入点,简单.方便使用.代码量不大,却可以完成很多以前觉的是很难实现的工作.这让我觉的找到了可以深入学习Clang

LLVM每日谈之十六 LLVM的学习感悟

这些总结并非我自己写的,而是摘自LLVM的版本比较老的文档中.因为老版本的文档已经鲜有人关注了,而这篇总结的非常好,到现在也很有用处,所以就把这部分内容贴出来了.这只是原文档的一部分. 原文档地址:http://llvm.org/releases/1.1/docs/Stacker.html 正文内容: Lessons I Learned About LLVM Everything's a Value! Although I knew that LLVM uses a Single Static

LLVM每日谈之十五 LLVM自带的examples

 作者:snsn1984            在LLVM源码的目录下,有一个目录叫做examples,这个目录下边有几个LLVM的例子,初学者一般不会太关注这些例子,但是这些例子确实是精华中的精华,在LLVM的学习过程中不可避免的要对这些例子所涉及内容要精通.所以希望大家一定要对这些例子重视起来,它们都是经典中的经典.从我个人而言,从这些例子中学到了很多,文档说了很多都没能让人明白的东西,在这里,一个简单的例子就讲的很清楚了.         首先,要想执行这些例子,可以在cmake的时候加上

LLVM每日谈之二十二 llvm-config工具的使用

作者:史宁宁(snsn1984) llvm-config作为LLVM的一个工具,是非常有用的,官方文档(http://llvm.org/docs/CommandGuide/llvm-config.html)关于它的介绍如下: llvm-config makes it easier to build applications that use LLVM. It can print the compiler flags, linker flags and object libraries neede