2012年10月30日 星期二

LLVM 程式員手冊 - 簡介及背景知識

目錄

  1. 簡介
  2. 背景知識
  3. 重要跟有用的 LLVM API
  4. 為你的程式挑個正確的資料結構
  5. 常用操作的小提示集
  6. 執行緒與 LLVM
  7. 進階議題
  8. LLVM 核心類別的族譜
本文翻譯自 LLVM Programmer's Manual
Written by Chris Lattner, Dinakar Dhurjati, Gabor Greif, Joel Stanley, Reid Spencer and Owen Anderson

Translated by Kito Cheng (kito at 0xlab.org)
WIKI 版本

簡介

這份文件主要列出一些 LLVM 中重要的類別跟界面,而這邊並不會解釋 LLVM 是甚麼東西,它內部怎麼運作以及 LLVM 的程式碼看起來如何。對於本文件的閱讀者我們假設你對於 LLVM 已經有一些基礎的了解,並且對於寫最佳化、分析或玩弄程式碼有興趣。

這份文件主要引導你如何擴充 LLVM 來達到你想要作的事。另外閱讀這份文件並不能取代啃 Source Code。如果你想看某個 Class 有哪些 Method 並且在幹嘛,那建議可以直接去看線上 doxygen 文件比較符合你的需求。
接下來的第一個章節主要介紹一些背景知識,第二章節則列出一些 LLVM 中核心的一些 Class ,未來這份文件會撰寫有關如何擴充整個 LLVM ,例如使用 Dominator 的資訊, Control Flow Graph 的走訪以及一些有用的小工具例如 InstVisitor template。

背景知識

這個章節放了一些有幫助你玩弄 LLVM 相關資訊的連結,但裡面沒提到 LLVM 相關的 API。

譯註:會寫 C++ 的話直接跳過吧,另外沒用過 STL 的話不算在會 C++ 的範圍內

The C++ Standard Template Library

LLVM 大量使用 C++ 的 Standard Template Library (STL),所以基本上你需要一些對於 C++ STL 的基礎知識以及一些相關使用慣例,下面提供一些相關資訊的連結可以給你惡補一下。
下面是惡補專區:
開始玩弄 LLVM 前最好也先閱讀一下 LLVM Coding Standards guide ,這份文件主要是讓你寫出好維護又好讀的 Code,而不是去規定你 { 跟 } 要怎麼放。

其它有用的連結

Using static and shared libraries across platforms