幫助中心 | 我的帳號 | 關於我們

LLVM編譯器實戰教程/電腦科學叢書

  • 作者:(巴西)布魯諾·卡多索·洛佩斯//拉斐爾·奧勒|譯者:過敏意//冷靜文
  • 出版社:機械工業
  • ISBN:9787111631972
  • 出版日期:2019/08/01
  • 裝幀:平裝
  • 頁數:212
人民幣:RMB 79 元      售價:
放入購物車
加入收藏夾

內容大鋼
    LLVM是一個正在發展中的前沿編譯器技術框架,它易於擴展並設計成多個庫,可以為編譯器入門者提供流暢的體驗,並能使編譯器開發所涉及的學習過程變得非常順暢。本書首先介紹如何配置、構建和安裝LLVM庫、工具和外部項目,隨後介紹LLVM設計以及它在每個LLVM編譯器階段的實際工作方式,這些階段包括:前端、IR、後端、JIT引擎、交叉編譯功能和插件介面。本書還提供了多個實際操作的範例和源代碼片段,可以幫助讀者順利地掌握LLVM編譯器開發環境的入門知識。

作者介紹
(巴西)布魯諾·卡多索·洛佩斯//拉斐爾·奧勒|譯者:過敏意//冷靜文

目錄
出版者的話
譯者序
前言
關於作者
關於審稿人
第1章  構建和安裝LLVM
  1.1  了解LLVM版本
  1.2  獲取預構建包
    1.2.1  獲取官方預構建二進位文件
    1.2.2  使用軟體包管理器
  1.3  從源代碼構建
    1.3.1  系統要求
    1.3.2  獲取源代碼
    1.3.3  構建和安裝LLVM
    1.3.4  Windows和Microsoft Visual Studio
    1.3.5  Mac OS X和Xcode
  1.4  總結
第2章  外部項目
  2.1  Clang外部項目介紹
    2.1.1  構建和安裝Clang外部工具
    2.1.2  理解Compiler-RT
    2.1.3  實驗Compiler-RT
  2.2  使用DragonEgg插件
    2.2.1  構建DragonEgg
    2.2.2  使用DragonEgg和LLVM工具了解編譯流程
    2.2.3  理解LLVM測試套件
    2.2.4  使用LLDB
    2.2.5  libc++標準庫介紹
  2.3  總結
第3章  工具和設計
  3.1  LLVM的基本設計原理及其歷史
  3.2  理解目前的LLVM
  3.3  與編譯器驅動程序交互
  3.4  使用獨立工具
  3.5  深入LLVM內部設計
    3.5.1  了解LLVM的基本庫
    3.5.2  介紹LLVM的C++慣例
    3.5.3  演示可插拔的流程介面
  3.6  編寫你的第一個LLVM項目
    3.6.1  編寫Makefile
    3.6.2  編寫代碼
  3.7  關於LLVM源代碼的一般建議
    3.7.1  將代碼理解為文檔
    3.7.2  請求社區的幫助
    3.7.3  應對更新:使用SVN日誌作為文檔
    3.7.4  結束語
  3.8  總結
第4章  前端
  4.1  Clang簡介
    4.1.1  前端操作

    4.1.2  庫
    4.1.3  理解Clang診斷
  4.2  Clang前端階段介紹
    4.2.1  詞法分析
    4.2.2  語法分析
    4.2.3  語義分析
    4.2.4  生成LLVM IR代碼
  4.3  完整的例子
  4.4  總結
第5章  LLVM中間表示
  5.1  概述
  5.2  操作IR格式的基本工具示例
  5.3  LLVM IR語法介紹
  5.4  編寫自定義的LLVM IR生成器
    5.4.1  構建和運行IR生成器
    5.4.2  使用C++後端編寫代碼來生成IR構造
  5.5  在IR層執行優化
    5.5.1  編譯時優化和鏈接時優化
    5.5.2  發現最佳編譯器流程
    5.5.3  流程間的依賴關係
    5.5.4  了解流程API
    5.5.5  自定義流程
  5.6  總結
第6章  後端
  6.1  概述
  6.2  後端代碼結構介紹
  6.3  後端庫介紹
  6.4  如何使用TableGen實現LLVM後端
    6.4.1  TableGen語言
    6.4.2  代碼生成器.td文件介紹
  6.5  指令選擇階段介紹
    6.5.1  SelectionDAG類
    6.5.2  降級
    6.5.3  DAG合併以及合法化
    6.5.4  DAG到DAG指令選擇
    6.5.5  指令選擇過程可視化
    6.5.6  快速指令選擇
  6.6  調度器
    6.6.1  指令執行進程表
    6.6.2  競爭檢測
    6.6.3  調度單元
  6.7  機器指令
  6.8  寄存器分配
    6.8.1  寄存器合併器
    6.8.2  虛擬寄存器重寫
    6.8.3  編譯目標的信息
  6.9  前序代碼和結束代碼
  6.10   機器代碼框架介紹
    6.10.1   MC指令
    6.10.2   代碼輸出

  6.11   自定義機器流程
  6.12  總結
第7章  即時編譯器
  7.1  LLVM JIT引擎的基礎知識介紹
    7.1.1  介紹執行引擎
    7.1.2  內存管理
  7.2  llvm::JIT框架介紹
    7.2.1  將二進位大對象寫入內存
    7.2.2  使用JITMemoryManager
    7.2.3  目標代碼輸出器
    7.2.4  目標信息
    7.2.5  學習如何使用JIT類
  7.3  llvm::MCJIT框架介紹
    7.3.1  MCJIT引擎
    7.3.2  MCJIT中模塊編譯過程
    7.3.3  使用MCJIT引擎
  7.4  使用LLVM JIT編譯工具
    7.4.1  使用lli工具
    7.4.2  使用llvm-rtdyld工具
  7.5  其他資源
  7.6  總結
第8章  跨平台編譯
  8.1  GCC和LLVM對比
  8.2  目標三元組介紹
  8.3  準備自己的工具鏈
    8.3.1  標準C/C++庫
    8.3.2  運行時庫
    8.3.3  彙編器和鏈接器
    8.3.4  Clang前端
  8.4  用Clang命令行參數進行交叉編譯
    8.4.1  針對目標的驅動程序選項
    8.4.2  依賴包
    8.4.3  交叉編譯
    8.4.4  更改系統根目錄
  8.5  生成Clang交叉編譯器
    8.5.1  配置選項
    8.5.2  構建和安裝基於Clang的交叉編譯器
    8.5.3  其他構建方法
  8.6  測試
    8.6.1  開發板
    8.6.2  模擬器
  8.7  其他資源
  8.8  總結
第9章  Clang靜態分析器
  9.1  靜態分析器的作用
    9.1.1  傳統警告信息和Clang靜態分析器比較
    9.1.2  符號執行引擎的高效性
  9.2  測試靜態分析器
    9.2.1  使用驅動程序與使用編譯器
    9.2.2  了解可用的檢查器

    9.2.3  在Xcode IDE中使用靜態分析器
    9.2.4  生成HTML格式的圖形
    9.2.5  處理大型項目
  9.3  使用自定義的檢查器擴展靜態分析器
    9.3.1  熟悉項目架構
    9.3.2  自定義檢查器
  9.4  其他資源
  9.5  總結
第10章  基於LibTooling的Clang工具
  10.1  生成編譯命令資料庫
  10.2  clang-tidy工具
  10.3  代碼重構工具
    10.3.1  Clang Modernizer(代碼轉換器)
    10.3.2  Clang Apply Replacements(替換執行器)
    10.3.3  ClangFormat(格式化工具)
    10.3.4  Modularize(模塊化工具)
    10.3.5  Module Map Checker(模塊映射檢查器)
    10.3.6  PPTrace(追蹤工具)
    10.3.7  Clang Query(查詢工具)
    10.3.8  Clang Check(檢查工具)
    10.3.9  remove-cstr-calls(調用移除工具)
  10.4  編寫自己的工具
    10.4.1  問題定義:編寫一個C++代碼重構工具
    10.4.2  配置源代碼位置
    10.4.3  剖析工具的模板代碼
    10.4.4  使用AST匹配器
    10.4.5  編寫回調函數
    10.4.6  測試編寫的重構工具
  10.5  其他資源
  10.6  總結
索引

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032