读完了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分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值