LLVM 关键点总结

作者: Scott_Song | 来源:发表于2018-11-20 21:31 被阅读3次

LLVM不是一个编译器,而是一套工具集,这套工具包括完整编译过程的所有部分,它将编译过程的各个部分模块化,用户可以根据自己的需求自己编写一个前端,并在里面通过自定义的driver调用LLVM提供的toolchain生成可执行文件,组成一个编译器。 具体来说是将中间代码优化,不同平台上的代码生成部分都模块化,在编写新语言编译器时只需要写一个前端将语言的源码转化成LLVM的中间表示代码IR,然后调用LLVM对IR的优化模块和代码生成模块,生成不同平台的可执行文件。

LLVM和GCC的比较
GCC更像是一个黑盒,无法把它进行拆分。而LLVM设计是模块化的,可以通过API调用编译过程中的某一部分。
GCC的协议要求产品必须免费,不能出售,LLVM采用BSD协议,所以商业化产品只能使用LLVM。

LLVM的中间语言IR
IR是LLVM的关键,任何语言只要提供工具将源码转化为IR,就可以省去开发剩下的部分(代码优化,代码生成)。GCC没有IR,代码优化是基于assembly代码上进行,assembly代码优化在不同平台有不同的做法,就无法模块化。有了IR,所有的代码优化部分就可以在IR上进行,任何平台都一样,就可以独立出来。

Solidity没有用LLVM是因为LLVM还不支持EVM自定义的指令集,无法通过LLVM工具生成出字节码。如果使用wasm格式,LLVM已经有模块支持生成wasm格式文件,这就是为什么wasm合约可以使用更多语言开发。

相关文章

  • LLVM 关键点总结

    LLVM不是一个编译器,而是一套工具集,这套工具包括完整编译过程的所有部分,它将编译过程的各个部分模块化,用户可以...

  • LLVM总结

    附上大大的博客AloneMokey 关注的重点 Pass(通常翻译为“流程”):Pass用来将程序的中间表示之间相...

  • LLVM(2)-编写一个代码检查的Clang插件

    上篇讲到了玩转LLVM最关键的一步-编译自己的LLVM和Clang[https://www.jianshu.com...

  • 基于LLVM的思考

    最近在看LLVM相关代码,产生了一点思考。 LLVM是编译器的基础设施,苹果的Xcode编译系统就是以LLVM展开...

  • LLVM

    LLVM 什么是LLVM? 官网:https://llvm.org/ The LLVM Project is a ...

  • LLVM探索

    LLVM的概念 日常开发过程我们的开发工具或多或少都跟LLVM扯得上一点关系,那么什么是LLVM呢?它有什么作用呢...

  • iOS_LLVM

    LLVM 官网:https://llvm.org/[https://llvm.org/] The LLVM Pro...

  • UI关键点总结

    属性: 使用assign: 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, floa...

  • Linkedin关键点总结

    Linkedin功能非常强大(涵盖了类似微信朋友圈、公众号、论坛、online message等功能),但使用其实...

  • 关键点寻宝总结

    交易总结:“五一”假期对IF主力合约进行了80关键点操作系统历史回测统计分析,明确了关键点的趋势判断和指引作用,完...

网友评论

    本文标题:LLVM 关键点总结

    本文链接:https://www.haomeiwen.com/subject/wjxfqqtx.html