首页 > 代码库 > 读完了LLVM作者的原始thesis论文(博士毕业论文?)
读完了LLVM作者的原始thesis论文(博士毕业论文?)
有几点值得说一下:
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论文(博士毕业论文?)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。