舉報

會員
編譯系統透視:圖解編譯原理
新設計團隊 著
更新時間:2019-01-04 03:32:25
開會員,本書免費讀 >
最新章節:
附錄 RTX定義
本書先對讀者最難理解的復雜過程、關系和數據結構以動畫視頻的方式進行直觀、形象的講解。看過這些視頻,讀者就會對編譯原理有一個概略、直觀、整體的理解,從而很容易掌握更深的內容。紙質內容再將編譯原理與GCC編譯器的源代碼有機聯系起來,用了大量直觀的圖示、源代碼、文字做詳細講解。本書沒有用一個數學公式,力爭用最簡單易懂的語言把深奧的理論講明白。讀者在看完本書后會真正了解一個編譯器是如何運行的,以及為什么要這么設計,更重要的是知道編譯完的程序執行時在內存中的運行時結構是什么樣的。
- 附錄 RTX定義 更新時間:2019-01-04 03:32:25
- 8.4 帶參數的宏定義
- 8.3 條件編譯
- 8.2 宏定義
- 8.1 文件包含
- 第8章 預處理
- 7.2.6 動態鏈接
- 7.2.5 庫函數的鏈接
- 7.2.4 鏈接器源代碼介紹
- 7.2.3 鏈接時統一計算地址并回填
- 7.2.2 多個.o文件鏈接時通過符號表建立關系
- 7.2.1 .o文件鏈接總體介紹
- 7.2 鏈接器
- 7.1.5 匯編器處理的源代碼分析
- 7.1.4 從匯編文件到目標文件的實現
- 7.1.3 代碼段、數據段以及其他各個表項間的關系
- 7.1.2 .o文件格式總體情況介紹
- 7.1.1 詳細介紹匯編指令到機器指令的轉化
- 7.1 匯編器
- 第7章 匯編與鏈接
- 6.7.5 復雜表達式案例的語法樹轉高端gimple的過程
- 6.7.4 作用域和生存期案例語法樹轉高端gimple的過程
- 6.7.3 指針類型數據語法樹轉高端gimple的過程
- 6.7.2 用戶自定義數據語法樹轉高端gimple的過程
- 6.7.1 基礎類型數據語法樹轉高端gimple的過程
- 6.7 所有案例語法樹轉中間結構(RTL)的過程
- 6.6.2 if條件下面“語句”部分的表達式語法分析
- 6.6.1 if條件中的表達式語法分析
- 6.6 表達式的語法分析過程
- 6.5.9 fun函數中靜態變量temp生存期信息的語法分析
- 6.5.8 main函數中退出內部語句塊時更新變量作用域過程分析
- 6.5.7 main函數中引用變量nCount時選擇相應聲明節點的過程分析
- 6.5.6 main函數中引用變量data時選擇相應聲明節點的過程分析
- 6.5.5 main函數內部語句塊中變量nCount作用域處理過程
- 6.5.4 main函數定義中局部變量聲明data作用域處理過程
- 6.5.3 fun函數定義的語法分析中作用域相關處理
- 6.5.2 全局變量data語法分析中作用域相關處理過程
- 6.5.1 C語言作用域和生存期概述
- 6.5 關于作用域和生存期的語法分析過程
- 6.4.2 對指針使用的語法分析
- 6.4.1 對swap_point函數中指針的語法分析
- 6.4 指針類型數據的語法分析過程
- 6.3.5 自定義數據聲明和使用的語法分析
- 6.3.4 union類型數據的語法分析
- 6.3.3 struct類型數據的語法分析
- 6.3.2 枚舉類型數據的語法分析
- 6.3.1 數組的語法分析
- 6.3 復合類型數據的語法分析過程
- 6.2.2 浮點型數據的語法分析
- 6.2.1 非浮點型數據的語法分析
- 6.2 基礎類型數據的語法分析過程
- 6.1.5 表達式總述
- 6.1.4 作用域和生存期總述
- 6.1.3 指針類型數據總述
- 6.1.2 用戶自定義類型數據總述
- 6.1.1 基礎類型數據總述
- 6.1 數據拓展案例的編譯過程總述
- 第6章 數據拓展案例的編譯過程
- 5.7.7 案例3的語法樹轉高端gimple
- 5.7.6 案例2的語法樹轉高端gimple
- 5.7.5 轉化RTL階段的主要步驟
- 5.7.4 案例1的低端gimple到cfg
- 5.7.3 案例1的高端gimple轉低端gimple
- 5.7.2 案例1的語法樹轉高端gimple的代碼分析
- 5.7.1 案例1的語法樹轉高端gimple的總體介紹
- 5.7 所有案例語法樹轉中間結構的過程
- 5.6.4 進入else進行分析
- 5.6.3 進入if進行分析
- 5.6.2 分析while循環語句
- 5.6.1 兩條變量聲明語句分析的結果
- 5.6 各種語句嵌套組合的語法分析過程
- 5.5.3 for語句的語法分析過程
- 5.5.2 while語句的語法分析過程
- 5.5.1 do…while語句的語法分析
- 5.5 do...while、while、for語句的語法分析過程
- 5.4.3 分析break語句
- 5.4.2 goto語句
- 5.4.1 switch…case語句
- 5.4 switch...case、goto、break語句的語法分析過程
- 5.3 帶標號語句的語法分析
- 5.2.3 if…else if語句的語法分析過程
- 5.2.2 if語句的語法分析過程
- 5.2.1 多個變量的聲明語句語法分析
- 5.2 if語句的語法分析
- 5.1 總述各個語句拓展案例的編譯過程
- 第5章 語句拓展案例的編譯過程
- 4.8.5 函數寫入匯編文件
- 4.8.4 全局變量寫入匯編文件
- 4.8.3 輸出匯編文件總入口
- 4.8.2 創建匯編文件
- 4.8.1 匯編文件介紹
- 4.8 RTL生成目標代碼(匯編)
- 4.7.3 確定初始RTL中的運行時信息
- 4.7.2 轉化RTL階段的主要步驟
- 4.7.1 為何要有RTL
- 4.7 生成RTL
- 4.6 cfg轉ssa
- 4.5.2 低端gimple轉cfg的實際過程
- 4.5.1 低端gimple到cfg的轉化概述
- 4.5 低端gimple到cfg
- 4.4.2 高端gimple轉化低端gimple的GCC代碼解析
- 4.4.1 高端gimple轉低端gimple概述
- 4.4 高端gimple到低端gimple
- 4.3.3 語法樹轉高端gimple的GCC源代碼解析
- 4.3.2 高端gimple的實際數據結構
- 4.3.1 語法樹到高端gimple的總體步驟及運行時
- 4.3 語法樹轉高端gimple
- 4.2 目標代碼到運行時結構的映射
- 4.1 總述語法樹到中間代碼的轉化過程
- 第4章 語法樹到目標代碼
- 3.7.2 全部語句的語法分析
- 3.7.1 GCC語法分析函數調用圖
- 3.7 GCC關于語法分析的源代碼解析
- 3.6 語法分析結果:語法樹
- 3.5.4 函數聲明和定義兩部分產生式的合并
- 3.5.3 對其他產生式都提取左公因子
- 3.5.2 用提取過左公因子的產生式再去匹配
- 3.5.1 對“直接聲明符”的產生式提取左公因子
- 3.5 提取左公因子,消除回溯
- 3.4.3 產生式的工作效率
- 3.4.2 消除左遞歸
- 3.4.1 用標準產生式做匹配,出現左遞歸
- 3.4 匹配產生式,消除左遞歸
- 3.3.2 產生式的具體示例
- 3.3.1 什么是產生式
- 3.3 產生式
- 3.2 語法分析思路
- 3.1 語法分析綜述
- 第3章 語法分析
- 2.4.3 標識符、數字、字符和字符串的詳細分析過程
- 2.4.2 結合GCC源代碼講解詞法分析過程
- 2.4.1 詞法分析源代碼總覽
- 2.4 GCC實現詞法分析的源代碼
- 2.3.2 依托狀態轉換圖展現詞法分析過程
- 2.3.1 狀態轉換圖總體介紹
- 2.3 狀態轉換圖
- 2.2 詞法分析過程
- 2.1 詞法分析概要說明
- 第2章 詞法分析
- 1.3.3 從語法樹到中間代碼再到目標代碼
- 1.3.2 語法分析
- 1.3.1 詞法分析
- 1.3 編譯過程概述
- 1.2 更為復雜C程序的運行時結構
- 1.1 一個簡單C程序的運行時結構
- 第1章 運行時結構及編譯過程概述
- 前言
- 版權信息
- 封面
- 封面
- 版權信息
- 前言
- 第1章 運行時結構及編譯過程概述
- 1.1 一個簡單C程序的運行時結構
- 1.2 更為復雜C程序的運行時結構
- 1.3 編譯過程概述
- 1.3.1 詞法分析
- 1.3.2 語法分析
- 1.3.3 從語法樹到中間代碼再到目標代碼
- 第2章 詞法分析
- 2.1 詞法分析概要說明
- 2.2 詞法分析過程
- 2.3 狀態轉換圖
- 2.3.1 狀態轉換圖總體介紹
- 2.3.2 依托狀態轉換圖展現詞法分析過程
- 2.4 GCC實現詞法分析的源代碼
- 2.4.1 詞法分析源代碼總覽
- 2.4.2 結合GCC源代碼講解詞法分析過程
- 2.4.3 標識符、數字、字符和字符串的詳細分析過程
- 第3章 語法分析
- 3.1 語法分析綜述
- 3.2 語法分析思路
- 3.3 產生式
- 3.3.1 什么是產生式
- 3.3.2 產生式的具體示例
- 3.4 匹配產生式,消除左遞歸
- 3.4.1 用標準產生式做匹配,出現左遞歸
- 3.4.2 消除左遞歸
- 3.4.3 產生式的工作效率
- 3.5 提取左公因子,消除回溯
- 3.5.1 對“直接聲明符”的產生式提取左公因子
- 3.5.2 用提取過左公因子的產生式再去匹配
- 3.5.3 對其他產生式都提取左公因子
- 3.5.4 函數聲明和定義兩部分產生式的合并
- 3.6 語法分析結果:語法樹
- 3.7 GCC關于語法分析的源代碼解析
- 3.7.1 GCC語法分析函數調用圖
- 3.7.2 全部語句的語法分析
- 第4章 語法樹到目標代碼
- 4.1 總述語法樹到中間代碼的轉化過程
- 4.2 目標代碼到運行時結構的映射
- 4.3 語法樹轉高端gimple
- 4.3.1 語法樹到高端gimple的總體步驟及運行時
- 4.3.2 高端gimple的實際數據結構
- 4.3.3 語法樹轉高端gimple的GCC源代碼解析
- 4.4 高端gimple到低端gimple
- 4.4.1 高端gimple轉低端gimple概述
- 4.4.2 高端gimple轉化低端gimple的GCC代碼解析
- 4.5 低端gimple到cfg
- 4.5.1 低端gimple到cfg的轉化概述
- 4.5.2 低端gimple轉cfg的實際過程
- 4.6 cfg轉ssa
- 4.7 生成RTL
- 4.7.1 為何要有RTL
- 4.7.2 轉化RTL階段的主要步驟
- 4.7.3 確定初始RTL中的運行時信息
- 4.8 RTL生成目標代碼(匯編)
- 4.8.1 匯編文件介紹
- 4.8.2 創建匯編文件
- 4.8.3 輸出匯編文件總入口
- 4.8.4 全局變量寫入匯編文件
- 4.8.5 函數寫入匯編文件
- 第5章 語句拓展案例的編譯過程
- 5.1 總述各個語句拓展案例的編譯過程
- 5.2 if語句的語法分析
- 5.2.1 多個變量的聲明語句語法分析
- 5.2.2 if語句的語法分析過程
- 5.2.3 if…else if語句的語法分析過程
- 5.3 帶標號語句的語法分析
- 5.4 switch...case、goto、break語句的語法分析過程
- 5.4.1 switch…case語句
- 5.4.2 goto語句
- 5.4.3 分析break語句
- 5.5 do...while、while、for語句的語法分析過程
- 5.5.1 do…while語句的語法分析
- 5.5.2 while語句的語法分析過程
- 5.5.3 for語句的語法分析過程
- 5.6 各種語句嵌套組合的語法分析過程
- 5.6.1 兩條變量聲明語句分析的結果
- 5.6.2 分析while循環語句
- 5.6.3 進入if進行分析
- 5.6.4 進入else進行分析
- 5.7 所有案例語法樹轉中間結構的過程
- 5.7.1 案例1的語法樹轉高端gimple的總體介紹
- 5.7.2 案例1的語法樹轉高端gimple的代碼分析
- 5.7.3 案例1的高端gimple轉低端gimple
- 5.7.4 案例1的低端gimple到cfg
- 5.7.5 轉化RTL階段的主要步驟
- 5.7.6 案例2的語法樹轉高端gimple
- 5.7.7 案例3的語法樹轉高端gimple
- 第6章 數據拓展案例的編譯過程
- 6.1 數據拓展案例的編譯過程總述
- 6.1.1 基礎類型數據總述
- 6.1.2 用戶自定義類型數據總述
- 6.1.3 指針類型數據總述
- 6.1.4 作用域和生存期總述
- 6.1.5 表達式總述
- 6.2 基礎類型數據的語法分析過程
- 6.2.1 非浮點型數據的語法分析
- 6.2.2 浮點型數據的語法分析
- 6.3 復合類型數據的語法分析過程
- 6.3.1 數組的語法分析
- 6.3.2 枚舉類型數據的語法分析
- 6.3.3 struct類型數據的語法分析
- 6.3.4 union類型數據的語法分析
- 6.3.5 自定義數據聲明和使用的語法分析
- 6.4 指針類型數據的語法分析過程
- 6.4.1 對swap_point函數中指針的語法分析
- 6.4.2 對指針使用的語法分析
- 6.5 關于作用域和生存期的語法分析過程
- 6.5.1 C語言作用域和生存期概述
- 6.5.2 全局變量data語法分析中作用域相關處理過程
- 6.5.3 fun函數定義的語法分析中作用域相關處理
- 6.5.4 main函數定義中局部變量聲明data作用域處理過程
- 6.5.5 main函數內部語句塊中變量nCount作用域處理過程
- 6.5.6 main函數中引用變量data時選擇相應聲明節點的過程分析
- 6.5.7 main函數中引用變量nCount時選擇相應聲明節點的過程分析
- 6.5.8 main函數中退出內部語句塊時更新變量作用域過程分析
- 6.5.9 fun函數中靜態變量temp生存期信息的語法分析
- 6.6 表達式的語法分析過程
- 6.6.1 if條件中的表達式語法分析
- 6.6.2 if條件下面“語句”部分的表達式語法分析
- 6.7 所有案例語法樹轉中間結構(RTL)的過程
- 6.7.1 基礎類型數據語法樹轉高端gimple的過程
- 6.7.2 用戶自定義數據語法樹轉高端gimple的過程
- 6.7.3 指針類型數據語法樹轉高端gimple的過程
- 6.7.4 作用域和生存期案例語法樹轉高端gimple的過程
- 6.7.5 復雜表達式案例的語法樹轉高端gimple的過程
- 第7章 匯編與鏈接
- 7.1 匯編器
- 7.1.1 詳細介紹匯編指令到機器指令的轉化
- 7.1.2 .o文件格式總體情況介紹
- 7.1.3 代碼段、數據段以及其他各個表項間的關系
- 7.1.4 從匯編文件到目標文件的實現
- 7.1.5 匯編器處理的源代碼分析
- 7.2 鏈接器
- 7.2.1 .o文件鏈接總體介紹
- 7.2.2 多個.o文件鏈接時通過符號表建立關系
- 7.2.3 鏈接時統一計算地址并回填
- 7.2.4 鏈接器源代碼介紹
- 7.2.5 庫函數的鏈接
- 7.2.6 動態鏈接
- 第8章 預處理
- 8.1 文件包含
- 8.2 宏定義
- 8.3 條件編譯
- 8.4 帶參數的宏定義
- 附錄 RTX定義 更新時間:2019-01-04 03:32:25