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翻译了)

    个性签名:时间会解决一切
  • 相关阅读:
    名字匹配(水题)
    奇怪的键盘
    杰杰的键盘
    Windows Message Queue(优先队列)
    筛法求素数
    会场安排问题(贪心)
    Sail
    Elevator
    Lowest Bit
    File Searching
  • 原文地址:https://www.cnblogs.com/lfri/p/15389416.html
Copyright © 2011-2022 走看看