Skip to content

Tag Archives: 编译

LLVM笔记(1):LLVM的语言(上)

(本文是 http://llvm.org/releases/2.9/docs/LangRef.html 的阅读笔记,前作为《LLVM笔记(0):在一切开始之前》。) 一句话总结: LLVM is a Static Single Assignment (SSA) based representation that provides type safety, low-level operations, flexibility, and the capability of representing ‘all’ high-level languages cleanly. It is the common code representation used throughout all phases of the LLVM compilation strategy. LLVM语言有三种形式:in-memory compiler IR, on-disk bitcode representation, human readable assembly language representation。三种表现形式是等价的。 LLVM语言的目标是:一方面 light-weight and […]

LLVM笔记(0):在一切开始之前

(本文是 http://llvm.org/releases/2.9/docs/GettingStarted.html 的阅读笔记。) LLVM的安装包分为三部分,LLVM工具包,LLVM-GCC,测试集。 自己编译LLVM三者都需要,但在主流平台上都有编译好的binary。 讲了LLVM的安装,没发现什么特别需要注意的。 LLVM的目录结构 llvm/examples: 很多有用的代码示例 llvm/include llvm/include/llvm LLVM头文件 llvm/include/llvm/Support 支持LLVM工具的头文件,但不和LLVM的功能密切相关 llvm/include/llvm/Config configure脚本生成的头文件,主要是Unix/C中标准头文件的包装。 llvm/lib 大部分的源代码都在这里,LLVM中几乎所有的代码都以库的形式存在 llvm/lib/VMCore/ llvm/lib/AsmParser/ llvm/lib/BitCode/ llvm/lib/Analysis/ llvm/lib/Transforms/ llvm/lib/Target/ llvm/lib/CodeGen/ llvm/lib/Debugger/ llvm/lib/ExecutionEngine/ llvm/lib/Support/ llvm/lib/System/ llvm/projects 并非LLVM一部分,但与LLVM共同发布的项目 llvm/runtime 需要LLVM-GCC编译 llvm/test llvm/tools 各种使用LLVM命令行工具 llvm/utils 帮助开发LLVM的命令行工具