码迷,mamicode.com
首页 > 其他好文 > 详细

读完了LLVM作者的原始thesis论文(博士毕业论文?)

时间:2015-01-16 16:50:04      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:llvm   phi   ssa   编译器   c++   

有几点值得说一下:

1、指令集可以进行类型分析,但不是说单独做什么iadd、fadd这样的低级CPU操作指令抽象(JVM/CLR都是这么设计的),要点在于,引入了malloc和alloca(堆分配和栈分配)本来是C语言的库函数,却做成了虚拟指令(这里作者没有管C++里的new和new[]的区别),然后通过getelementptr可以访问数据结构的字段;

  实际上,LLVM的alloca指令意味着可以进行栈上的动态分配,当然,alloca是C语言的标准库函数,不过之前可能很少想到这么用。因为栈上的动态分配意味着栈空间不足时也要能动态扩展大小。

2、把SSA里的phi函数单独做成了指令

3、函数调用在LLVM里也真是奇葩了,居然要写上返回类型,然后其他看上去就像C语言语法了,只不过变量名字有%前缀

4、中间用很多的篇幅讲解了“数据结构图”(DSG),而且用它来分析代码是线性复杂度。不过我没有怎么看明白,这和经典的CFG/DFG有什么区别联系?

这里作者强调比较多的是LLVM上的IPO(过程间优化)。


简而言之,LLVM就是特定于C语言架构的一套RISC风格虚拟指令集,内置支持SSA和Type分析。

读完了LLVM作者的原始thesis论文(博士毕业论文?)

标签:llvm   phi   ssa   编译器   c++   

原文地址:http://blog.csdn.net/cteng/article/details/42777255

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!