きつねさんでもわかるLLVM

キーフレーズ

LLVM return llvm const クラス メソッド 命令 リスト Tokens Function フロントエンド false ソースコード add 11V int string else 実装 関数 unsigned 生成 Metadata type Samp バックエンド BaseAST true 引数 std レジスタ sample NULL 定義 Pass for 構文解析 public inst オプション 指定 class result load expression end store call virtual lnstruction 場合 CodeGen 呼び出し char コード value ターゲット function AST 取得 cast get statement def getCurString PrototypeAST 処理 JIT 示し inc main entry 解析 001 DELETE IIvm stmt 使用 getNextToken 確認 pass nst MCOperand コンストラクタ proto 変数 Target test ExecutionEngine Builder 実行 label 作成 func AsmPrinter 最適化 align static 必要

目次

5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 目標の設定 .. 字句解析 .. 5.4.1 共通マクロの定義 .. 5.4.2 Token クラスの実装 .. 5.4.3 TokenStream クラスの実装 .. 5.4.4 字句解析の実装 .. 構文解析 .. 5.5.1 AST を考える .. 5.5.2 構文解析クラスの実装方針 .. 5.5.3 メソッドの実装 .. 意味解析 .. 5.6.1 意味解析の実装方法 .. 5.6.2 Parser クラスの修正 . 5.6.3 解析メソッドの修正 .. コード生成 .. 5.7.1 LLVM 旧の生成手順 . 5.7.2 コード生成クラスの実装方針 .. 5.7.3 メソッドの実装 . main の作成 . 5.8.1 入力ソースコード名と出力ソースコード名の受け取り . 5.8.2 各種初期化と作成した各クラスの呼び出し .. コンバイルと動作確認 .. 5.9.1 コンノヾイ丿レ .. 5.9.2 動作確認 mem2reg の適用と組み込み関数の導入 .. 5.10.1 mem2reg の適用 . 5.10.2 組み込み関数 . JIT をやってみる .. 5.11.1 LLVM での引 T.. 5.11.2 組み込み関数のリンクをプログラム中で行う .. Metadata を埋め込みたい場合 . 5.12.1 5.12.2 5.12.3 Metadata の生成 . setMetadata による Metadata の付与 . IRBuiIder のメソッドによる Metadata の付与 .. 目次 .. 59 .. 60 .. 60 … 61 .. 62 .. 65 … 69 .. 69 .. 80 .. 97 .. 97 .. 98 .. 99 .. 108 .. 108 .. 109 … 1 10 … 126 … 126 … 128 … 132 … 132 … 133 … 135 … 13 5 … 136 .. 140 .. 140 .. 146 … 152 ... 152 .. 154 … 1 56 Ⅵ 1

目次 3.4 ツールの種類と確認 .. 3.4.1 Clang .. 3.4.2 Ⅲ .. 3.4.3 llvm-as.. 3.4.4 Ⅱ ( .. 3.5 opt.. 3.5.1 llvm-link .. 3.5.2 llvm-objdump.. 3.5.3 llvm-config . 第 4 章 LLVM 旧 4.1 本章の概要と目的 .. 4.2 LLVM 旧の特徴 .. 4.3 LLVM 旧の構成 .. 4.4 LLVM の型と LLVM アセンブリの主な命令 .. 4.4.1 型分類 . 4.4.2 終端命 . 4.4.3 ニ項演算子 .. 4.4.4 ヒ、ツト演算子 . 4.4.5 合成演算子 . 4.4.6 メモリアクセス演算子 .. 4.4.7 型変換演算子 .. 4.4.8 その他の命令 .. 4.5 基本的な LLVM の中間表現 .. 4.6 条件文 .. 4.7 ループ文 .. 4.8 合成型へのアクセス .. 4.9 Metadata . 5 2 2 2 2 3 3 3 3 3 3 3 3 3 4 4 4 5 2 第 5 章フロントエンドの作成 5.1 本章の概要 .. 5.2 構文規則の定義… 6 6 5 5 5 Ⅵ

目次 目 はしがき . 第 1 章はじめに 1.1 本書の構成 .. 1.2 この本で何ができるようになるの ? .. 1.3 本書の目的とターゲット層 本書を読むにあたって必要となるもの . 1.4 1.4.1 必須なもの .. 1.4.2 あったほうがよいもの .. 1.5 本書内の記載について .. 第 2 章コンバイラと LLVM 2.1 一般的なコンバイラのお話 .. 2.2 LLVM プロジェクト .. LLVM のサブプロジェクト . 2.2.1 LLVM Core . 2.2.2 Clang. 2.2.3 2.2.4 LLDB . 2.2.5 compiler-rt.. 2.2.6 第 3 章環境構築 3.1 本章の概要と構成 . 3.2 環境 .. 3.3 インストール .. 3.3.1 ビルドに必要なパッケージのインストール .. 3.3.2 LLVM のピルドとインストール .. 3.3.3 ハスの設定 . 1 2 2 2 3 3 3 4 6 6 7 7 9 9 0 0 1 1 3 - 1 1 1 1 1 つな