官术网_书友最值得收藏!

  • 深入理解LLVM:代碼生成
  • 彭成寒 李靈 戴賢澤 王志磊 俞佳嘉
  • 705字
  • 2024-12-18 16:44:26

第1章 緒論

在現(xiàn)代計算機系統(tǒng)中,編譯器是必不可少的基礎軟件。程序員使用高級語言進行編程完成業(yè)務需求,編譯器則負責將高級語言轉換為底層硬件可以執(zhí)行的機器指令。

編譯器是計算機科學發(fā)展史中最為悠久的學科之一。現(xiàn)代公認的第一款編譯器是IBM于1957年發(fā)布的Fortran編譯器;讀者所熟知的GCC早在1987年就發(fā)布了第一個版本,距今快40年了;而本書討論的LLVM于2003年正式開源,也有20多年的歷史了。

早期編譯器研究聚焦于從高級語言到機器碼的轉換以及優(yōu)化程序滿足對時間和空間的需求。隨著時代的發(fā)展,應用程序執(zhí)行性能和多硬件支持逐步成為編譯器的主要需求,在編譯器領域產生了大量的有關程序分析與轉換、代碼自動生成以及運行時等新知識。與早期的編譯器實現(xiàn)相比,今天的編譯算法明顯更為復雜。例如,早期的編譯器采用簡單直觀的技術對程序進行詞法分析,而現(xiàn)代的編譯器詞法分析技術都是基于形式語言和自動機理論實現(xiàn)的,這使得編譯器前端的開發(fā)更為系統(tǒng)化;再例如,早期編譯器優(yōu)化技術更多采用簡單直觀的技術進行依賴分析和循環(huán)變換,而現(xiàn)代編譯器可以采用更為復雜的算法,例如多面體理論、線性規(guī)劃等。

本書討論的LLVM是過去20多年最成功的編譯項目之一,它不僅被廣泛用于C/C++等傳統(tǒng)語言的編譯,更被很多新型語言作為開發(fā)基礎。為什么LLVM能取得這么大的成就?根本原因在于LLVM良好的設計與實現(xiàn)。LLVM為編譯項目開發(fā)提供基礎,程序被前端編譯到LLVM IR,再由LLVM后端編譯至任意平臺(指LLVM所支持的大多數(shù)主流平臺),不同目標架構可以重用內置的編譯優(yōu)化,這極大地簡化了針對某一編程語言開發(fā)編譯器的過程。此外,LLVM還提供了完備的編譯相關的工具鏈。

本章主要探討LLVM的設計思路、發(fā)展現(xiàn)狀,以及LLVM構建和在線學習工具Compiler Explorer,方便讀者在學習后續(xù)章節(jié)。

主站蜘蛛池模板: 筠连县| 东阿县| 宝清县| 会宁县| 兴宁市| 绍兴市| 潍坊市| 武隆县| 黄浦区| 潼南县| 玉门市| 肃南| 巴东县| 德钦县| 青海省| 小金县| 太白县| 肥乡县| 永吉县| 青田县| 甘谷县| 开平市| 涟源市| 丁青县| 临澧县| 长宁区| 横峰县| 龙江县| 临城县| 新宁县| 清苑县| 宝丰县| 太湖县| 通江县| 霍山县| 蓬安县| 乌拉特中旗| 晋城| 谢通门县| 安化县| 赫章县|