LLVM基础笔记_1

LLVA是一种低价的虚拟指令集架构,它抽象出其它具体处理器上关键通用的部分,避免特定处理器上的约束,如物理寄存器,流水线(pipeline)等。它提供的指令集(V-ISA)与其它具体的指令集(I-ISA)相比有如下特点:

  1. 提供一个无限大,类型化的虚拟寄存器集合。
  2. 使用SSA表示形式,SSA广泛用于编译期优化。
  3. LLVA提供了一个独特的异常机制,可以显示的表示异常控制流。

设计

  1. 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.
  2. high-leve,yet language-independent.
    • Explicit CFG.
    • Explicit dataflow: SSA registers.
    • Explicit types: all values are typed.

可以理解为:

  1. 足够底层是为了方便优化,很多优化技术就是基于低阶IR。
  2. 不依赖硬件,目的是为了方便taget到不同的处理器。
  3. 高阶信息同样是为了程序分析优化,语言独立对于一种通用IR不言自明。

最终设计出来的IR,用作者自己的话来描述:

a low-level representation,with high-level type information.



参考:
[1]: http://llvm.org/pubs/2003-10-01-LLVA.html "LLVA"

posted on 2014-09-23 00:50  rifle1206  阅读(231)  评论(0)    收藏  举报

导航