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

posted @ 2021-10-10 14:32  Rogn  阅读(136)  评论(0编辑  收藏  举报