LLVM基础笔记_1
LLVA是一种低价的虚拟指令集架构,它抽象出其它具体处理器上关键通用的部分,避免特定处理器上的约束,如物理寄存器,流水线(pipeline)等。它提供的指令集(V-ISA)与其它具体的指令集(I-ISA)相比有如下特点:
- 提供一个无限大,类型化的虚拟寄存器集合。
- 使用SSA表示形式,SSA广泛用于编译期优化。
- LLVA提供了一个独特的异常机制,可以显示的表示异常控制流。
设计
- low-level enough to live below the OS,yet hardware-independent.
- RISC-like,3-address instructions.
- Infinite virtual register set.
- Load-store instructions via typed pointers.
- Distinguish stack,heap,globals,and code.
- high-leve,yet language-independent.
- Explicit CFG.
- Explicit dataflow: SSA registers.
- Explicit types: all values are typed.
可以理解为:
- 足够底层是为了方便优化,很多优化技术就是基于低阶IR。
- 不依赖硬件,目的是为了方便taget到不同的处理器。
- 高阶信息同样是为了程序分析优化,语言独立对于一种通用IR不言自明。
最终设计出来的IR,用作者自己的话来描述:
a low-level representation,with high-level type information.
参考:
[1]: http://llvm.org/pubs/2003-10-01-LLVA.html "LLVA"
浙公网安备 33010602011771号