zoukankan      html  css  js  c++  java
  • LLVM 0: LLVM和Clang的背景

    笔记:

    一、P2Tree-LLVM基本概念入门

    1. Chris Lattner nb

    2. Clang的发音是/ˈklæŋ/,这是官方确认过的

    3. IR的第三种表示是一种内存格式,只保存在内存中,所以谈不上文件格式和文件后缀,这种格式是LLVM之所以编译快的一个原因,它不像gcc,每个阶段结束会生成一些中间过程文件

    4. Clang前端和Clang驱动程序是两个不同的概念,通常我们在命令行上调用的clang工具,是Clang驱动程序

    二、小乖他爹-LLVM每日谈之二 LLVM IR

    1.IR的三种格式

    三、Douglas Chen-不深不淺,帶你認識 LLVM (20191218@系統貓)

    1. GCC没有及时的合并apple的gcc分支,所以Apple搞了Clang

    2. LLVM将Rust转成WASM

    Other language中Rust的支持最好

    3. LLVM将C文件转成Verilog

    4. JIT(Just in time): Java会越跑越快

    JIT编译是介于AOT(提前编译)和解释之间,是一种执行计算机代码的方法,程序在执行过程中(运行期)而不是在执行之前进行编译。通常,这包括将源代码或更常见的字节码到机器码的转换,然后直接执行

    例如,java中,.java文件被编译成由JVM解释的与平台无关的字节码(.class),JIT编译器在运行时将字节码编译成本机代码(本机的汇编代码)

    这种不提前编译而是运行期间编译,可以做一些运行期的优化:

    • JIT编译可以针对目标平台和操作系统进行优化。例如,JIT可以在检测到CPU支持SSE2矢量CPU指令时选择它们
    • JIT编译可以利用程序实际运行中的统计信息,重新排列,以及对频繁使用的本机代码进行缓存等

    5. JIT的一个例子:QEMU

    Guest Code通过JIT技术动态编译成Host Code,并且TB Buffer可以用作这个过程的缓存(也就是说如果Translated过了,就不用再通过JIT翻译了)

    个性签名:时间会解决一切
  • 相关阅读:
    bzoj 3438 小M的作物
    洛谷 1126 机器人搬重物
    hdu 4055 Number String
    顺序对齐
    codevs 1300 文件排版
    NOIP 2015 提高组 Day2
    poj 2484 A Funny Game
    51nod 1548 欧姆诺姆和糖果 (制约关系优化枚举)
    hdu 1907 John (anti—Nim)
    hdu 2516 取石子游戏 (斐波那契博弈)
  • 原文地址:https://www.cnblogs.com/lfri/p/15389416.html
Copyright © 2011-2022 走看看