读完了LLVM作者的原始thesis论文(博士毕业论文?)
2015-01-16 15:15
218 查看
有几点值得说一下:
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分析。
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分析。
相关文章推荐
- 【系列】Matei Zaharia(Spark系统作者)博士论文-0 摘要
- 【系列】Matei Zaharia(Spark系统作者)博士论文-0 摘要
- 【系列】Matei Zaharia(Spark系统作者)博士论文-1 引言
- Predator:比微软Kinect更强的视频追踪算法——来自捷克博士论文
- 论文首页最下方写作者简介,…
- 1999~2012年全国百优博士论文 (计算机类)
- MTL 作者 论文 序
- Predator:比微软Kinect更强的视频追踪算法-来自捷克博士论文
- 国外博士论文下载
- 博士论文的开题报告写作
- Fielding博士论文导读----第4章
- 关于Fielding博士论文导读
- 国外博士论文下载
- 你的论文,你做主—研究生毕业论文的写作过程
- 深度学习大神都推荐入门必须读完这9篇论文
- 如何检索国外的博士论文
- 论文首页最下方写作者简介,…
- 国外博士论文下载~
- 昆明理工大学博士、硕士论文撰写规范
- 中科院计算所博士论文模板(适用于mac系统,支持新logo)