多年研发和团队管理经验,熟悉LLVM、GPU等技术领域,具备公司层面技术管理能力。
原文地址: http://eli.thegreenplace.net/2012/07/05/how-clang-handles-the-type-variable-name-ambiguity-of-cc/ How Clang handles th...
七天LLVM零基础入门这系列文章,为了让刚接触LLVM的人在最短的时间内快速的熟悉LLVM。这系列文章,现在经过将近一年的时间的使用,有了不少反馈的意见,现在将这些情况总结一下。
要想深入的研究Clang,抽象语法树是必须要完全理解的。关于抽象语法树的资料,wiki介绍的很详细:http://en.wikipedia.org/wiki/Abstract_syntax_tree 如果觉的这个英文文档不是太好理解,也可以找点别的中文资料,但是这个文档还是要认真读的。
我的2013是在忙碌之中度过的,为了在这个城市里面给自己一个小窝而努力奔波。技术上,这一年是不断的积累的过程,有突破有成长,更多的还是默默的积累。回想起来,默默的积累才是正常的状态,厚积才能薄发,不经过积累哪里会有更好的突破。
In summary, here’s some things to always remember about the GetElementPtr instruction: The GEP instruction never accesses memory, it only provides pointer computations.
作者:史宁宁(snsn1984) Clang和LLVM的关系 Clang和LLVM到底是什么关系,这是在研究Clang的过程中所不可避免的一个问题。
原文地址:http://llvm.lyngvig.org/Articles/Mapping-High-Level-Constructs-to-LLVM-IR Mapping High-Level Constructs to LLVM IR Table of...
In this email, I argue that LLVM IR is a poor system for building a Platform, by which I mean any system where LLVM IR would be a ...
原文地址:http://clang.llvm.org/docs/ClangTools.html 译者:史宁宁(snsn1984) 简介 Clang工具是为C++开发者所设计的单独的命令行(潜在的图形界面)工具,这些开发者是已经使用Clang并且喜欢使用Clang作为他们的编译器。
NDK Development: ==== This document describes how one can modify the NDK and generate new experimental release packages for it.
Android NDK Overview === Introduction: --- The Android NDK is a set of tools that allows Android application developers to em...
Android NDK How-To: =================== A collection of tips and tricks for NDK users How to force the display of build command...
原文地址:http://clang.llvm.org/docs/InternalsManual.html 译者:史宁宁(snsn1984) "Clang"C语言前端内部手册 简介 这个文档描述了比较重要的API中的一部分API,还表述了Clang C语言前端中的一些内部设计想法。
之前一直关注LLVM和基于LLVM的工程(工具)多一些,对Clang和基于Clang的工具关注不是很多。这就导致了一个很严重的问题,觉的如果要深入理解Clang就必须要去读Clang的源码,这个想法不是不对,但是这不是唯一的路,而且Clang的源码太多,容易让人无法坚持下去,也容易让人无从下手。
原文地址:http://clang.llvm.org/docs/Tooling.html 译者:史宁宁(snsn1984) 为你的程序选择正确的接口 Clang为实现需要一个程序的语法和语义信息的工具提供了基础设施。
原文地址:http://blog.llvm.org/2013/11/google-summer-of-code-c-modernizer.html Google Summer of Code (GSoC) offers students stip...
Design: cpp11-migrate This document describes the design of the tool cpp11-migrate used to automatically migrate legacy C++ code to use features of the new C++11 standard.
原文地址:http://blog.llvm.org/2013/04/status-of-c11-migrator.html 译者:史宁宁(snsn1984) 自从2012年12月早些时候,C++11迁移器工具cpp11-migrate的设计文档发布以来,我们的开发工作进展顺利。
Since the design document for cpp11-migrate, the C++11 migrator tool, was first proposed in early December 2012 development has been making steady progress.
作者 Alex Blewitt ,译者 臧秀涛 发布于 十二月 05, 2012 在今年11月的LLVM开发者大会上,来自Apple的Doug Gregor做了一场讲座,主题是向C语言中加入模块(Module)机制。
作者 Abel Avram ,译者 臧秀涛 发布于 五月 20, 2013 通过支持运行LLVM位码(bitcode),Google增强了对Chrome中原生应用的支持。
作者 Jeff Martin ,译者 臧秀涛 发布于 七月 01, 2013 最近发布的LLVM 3.3带来了大量新特性,其中包括通过Clang子项目实现的完全兼容C++11的编译器。
本人用的最多的是:Skype, WordPress, LinkedIn. 剩下的有的是偶尔使用,有些根本没用过,但是不得不承认,这里能列出来的,基本都是各个领域的鼻祖。在我们习惯了用山寨之后,看看鼻祖们是怎么做的,总是很另我们意外。(图片来源于网络)
一直以来喜欢随手记东西,随手写东西,所以云笔记的出现让我很欣喜,欣喜之余我就一直关注各个品牌的云笔记的发展状况,并且会去不断的试用。 刚刚得知google已经发布了他自己的云笔记keep,虽然消息有点滞后,但是还是迫不及待的去试用了下,试用之后感受如下: 1. 确实很简单。
这些总结并非我自己写的,而是摘自LLVM的版本比较老的文档中。因为老版本的文档已经鲜有人关注了,而这篇总结的非常好,到现在也很有用处,所以就把这部分内容贴出来了。
作者:snsn1984 在LLVM源码的目录下,有一个目录叫做examples,这个目录下边有几个LLVM的例子,初学者一般不会太关注这些例子,但是这些例子确实是精华中的精华,在LLVM的学习过程中不可避免的要对这些例子所涉及内容要精通。
关于C++的书太多了,很容易让人没有头绪。一直想整理下,把这些书列个书单出来,直到今天才动手。希望我的经验能给后来的初学者一点帮助。1.《C++程序设计教程》 钱能很多学校把这本书选做C++课程的教材。
大学毕业至今,被面试的次数屈指可数,每次面试前都认真准备,了解公司的背景,了解要申请的职位的要求等等,还会考虑面试官会关注的问题。所以没有出现过太大的问题,基本上面试都顺利通过。
每次内容主要出自文档: “Clang” CFE Internals Manual地址: http://clang.llvm.org/docs/InternalsManual.html 在这个文档中,以简明的的一个例子说明了如何按照这个方式在Clang中添加一个属性。
53. Pay attention to compiler warnings. 总结: 第一,严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告级别下争取“无任何警告”的荣誉。
49. Understand the behavior of the new-handler. 总结: 第一,set_new_handler允许客户指定一个函数,在内存分配无法获得满足时被调用。
32.Make sure public inheritance models "is-a". 所谓的最佳设计,取决于系统希望做什么事,包括现在与未来。 需要解决的问题:其中关于两个assert都通过的地方有些疑惑。
26. Postpone variable definitions as long as possible. 总结: 尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程序效率。
18. Make interfaces easy to use correctly and hard to use incorrrectly. 总结: 第一,好的接口很容易被正确使用,不容易被误用。
13. Use objects to manage resources. 总结: 第一,为了防止资源泄露,请使用RAII对象,它们在构造函数中获得资源并在西沟函数中释放资源。
5.Know what functions C++ silently writes and calls. 总结:编译器可以暗自为class创建default构造函数、copy构造函数、copy assginment操作符,以及析构函数。
1、View C++ as a federation of languages C++的四个次语言:1)C2)Object-Oriented C++3)Template C++4)STL 2、Prefer consts, enums, and inlines to #defines一方面是因为使用宏定义不利于调试的时候定位错误,另一方面主要是因为预处理器和编译器两者分工不同所导致的。
关键字:explicit1、除非有明显的理由想要定义隐式转换,否则,单形参构造函数应该为explicit。将构造函数设置为explicit可以避免错误,并且当转换有用时。
作者:snsn1984 PS:最近一段时间,投入在LLVM上的时间有些减少。差点把对它的研究断掉,今天开始继续。对LLVM的研究需要很长一段时间的坚持不懈才可以彻底搞明白。
作者:snsn1984 题记:在学习LLVM的过程中,要想学的更加深入,掌握更多的技能,LLVM的源码是必须要读的,但是在这么多的源码中,从哪里下手?很容易让人找不到头脑,本文这里就先拿出几个Pass相关的源码文件进行分析。
作者:snsn1984 近来碰到一些想学习LLVM但是已经把编译原理的知识还给老师的朋友,让帮忙推荐一些学习资料,我就把手头有的一些资料,大都是自己读过的一些资料整理一下,列出来,希望对大家有所帮助。
作者:snsn1984 这是这一次零基础入门的最后一天,这次的主要任务是实战一个Pass。 任务描述:实现一个Pass,该Pass可以读取一个程序中所有的for循环的循环头的名字并输出。
作者:snsn1984 就像很多优秀的软件都有自己的测试框架一样,LLVM也有自己的测试框架。LLVM的测试主要分为两 部分:regression tests 和 whole programs。
作者:snsn1984 创建本地的LLVM SVN镜像,有一些好处,但是需要花费很多的时间,但是一旦建立好了,后面用起来就方便了很多。 可以随意的在没有网络或者网络状态不好的时候去使用LLVM的代码。
作者:snsn1984 第一步:对优化代码的pass继续进行深入的分析 首先检查一下第五天中的Pass练习,什么情况下可以进行优化,什么情况下不可以进行优化。
作者:snsn1984 第一步:复习文档 Write an LLVM pass http://llvm.org/docs/WritingAnLLVMPass.html 第二步:阅读LLVM编程规范http://llvm.org/docs/CodingStandards.html 编程规范是编程中需要注意的基础点,代码风格符合不符合规范,将会直接影响整个代码的可读性和代码质量。
在bitbucket上使用https协议,经常会在提交代码的时候出错,让人很着急上火,但是用ssh就要方便很多。下面介绍一下设置ssh的方法:1.在终端中运行ssh-keygen。
git branch显示当前所在的分支,以及目前本地所有分支前面有*标注的是当前所在分支git branch XXX创建新的分支git checkout -b XXX创建新的分支并且切换到新分支上git checkout XXX切换到新的分支上(此命令也可以用于切...
作者:snsn1984 第一步:复习第三天的时候,我们学习了LLVM的编程指引。在开始第四天的学习之前,需要复习之前学习过的两篇文档: LLVM IR的文档(http://llvm.org/docs/LangRef.html) 编程指引文档 (http://llvm.org/docs/ProgrammersManual.html) 这两篇文档是LLVM的重中之重,希望学习的时候认真一点,能掌握这些文档的核心。