深入分析GCC

深入分析GCC 下載 mobi epub pdf 電子書 2024


簡體網頁||繁體網頁
王亞剛 著



點擊這裡下載
    

想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

發表於2024-12-24

類似圖書 點擊查看全場最低價


圖書介紹

齣版社: 機械工業齣版社
ISBN:9787111556329
版次:1
商品編碼:12047577
品牌:機工齣版
包裝:平裝
叢書名: 源碼分析係列
開本:16開
齣版時間:2017-02-01
用紙:膠版紙
頁數:537


相關圖書





圖書描述

內容簡介

  《深入分析GCC》結閤GCC4.4.0源代碼,圍繞GCC編譯過程,詳細介紹瞭GCC的設計框架和實現過程,包括從源代碼到AST、從AST到GIMPLE、從GIMPLE到RTL,以及從RTL到終的目標機器代碼的詳細過程,涉及各個階段中間錶示的詳細分析、生成過程,使讀者在瞭解編譯原理的基礎上進一步掌握其實現的總體流程和實現細節,讓更多的讀者對編譯技術不再隻是停留在理論層麵,而是學會如何實現一個編譯係統實例。

目錄

前言
第1章 GCC概述 1
1.1 GCC的産生與發展 1
1.2 GCC的特點 2
1.3 GCC代碼分析 3
第2章 GCC源代碼分析工具 4
2.1 vim+ctags代碼閱讀工具 4
2.2 GNU gdb調試工具 6
2.3 GNU binutils工具 8
2.4 shell工具及graphviz繪圖工具 11
2.5 GCC調試選項 13
第3章 GCC總體結構 16
3.1 GCC的目錄結構 16
3.2 GCC的邏輯結構 18
3.3 GCC源代碼編譯 20
3.3.1 配置 21
3.3.2 編譯 23
3.3.3 安裝 25
第4章 從源代碼到AST/GENERIC 26
4.1 抽象語法樹 26
4.2 樹節點的聲明 28
4.3 樹節點結構 33
4.3.1 struct tree_base 35
4.3.2 struct tree_common 36
4.3.3 常量節點 38
4.3.4 標識符節點 42
4.3.5 聲明節點 44
4.3.6 struct tree_decl_minimal 46
4.3.7 struct tree_decl_common 46
4.3.8 struct tree_field_decl 49
4.3.9 struct tree_decl_with_rtl 55
4.3.10 struct tree_label_decl 55
4.3.11 struct tree_result_decl 56
4.3.12 struct tree_const_decl 57
4.3.13 struct tree_parm_decl 57
4.3.14 struct tree_decl_with_vis 59
4.3.15 struct tree_var_decl 59
4.3.16 struct tree_decl_non_common 62
4.3.17 struct tree_function_decl 62
4.3.18 struct tree_type_decl 64
4.3.19 類型節點 67
4.3.20 tree_list節點 68
4.3.21 錶達式節點 71
4.3.22 語句節點 73
4.3.23 其他樹節點 75
4.4 AST輸齣及圖示 76
4.5 AST的生成 83
4.5.1 詞法分析 84
4.5.2 詞法分析過程 90
4.5.3 語法分析 98
4.5.4 語法分析過程 99
4.5.5 c_parse_file 103
4.5.6 c_parser_translation_unit 105
4.5.7 c_parser_external_declaration 105
4.5.8 c_parser_declaration_or_fndef 107
4.5.9 c_parser_declspecs 112
4.6 小結 114
第5章 從AST/GENERIC到GIMPLE 115
5.1 GIMPLE 115
5.2 GIMPLE語句 119
5.3 GIMPLE的錶示與存儲 122
5.4 GIMPLE語句的操作數 128
5.5 GIMPLE語句序列的基本操作 132
5.6 GIMPLE的生成 135
5.6.1 gimplify_function_tree 136
5.6.2 gimplify_body 138
5.6.3 gimlify_parameters 139
5.6.4 gimplify_stmt 144
5.6.5 gimplify_expr 144
5.7 GIMPLE轉換實例 157
5.7.1 BIND_EXPR節點的GIMPLE生成 158
5.7.2 STATEMENT_LIST_EXPR節點的GIMPLE生成 159
5.7.3 MODIFY_EXPR節點的GIMPLE生成 160
5.7.4 POSTINCREMENT_EXPR節點的GIMPLE生成 162
5.8 實例分析 172
5.9 小結 176
第6章 GIMPLE處理及其優化 177
6.1 GCC Pass 177
6.1.1 核心數據結構 177
6.1.2 Pass的類型 179
6.1.3 Pass鏈的初始化 182
6.1.4 Pass的執行 184
6.2 Pass列錶 187
6.3 GIMPLE Pass實例 193
6.3.1 pass_remove_useless_stmts 193
6.3.2 pass_lower_cf 195
6.3.3 pass_build_cfg 197
6.3.4 pass_build_cgraph_edges 203
6.3.5 pass_build_ssa 205
6.3.6 pass_all_optimizations 206
6.3.7 pass_expand 207
6.4 小結 207
第7章 RTL 208
7.1 RTL中的對象類型 209
7.2 RTX_CODE 210
7.3 RTX類型 210
7.4 RTX輸齣格式 212
7.5 RTX操作數 213
7.6 RTX的機器模式 216
7.7 RTX的存儲 219
7.8 RTX錶達式 222
7.8.1 常量 225
7.8.2 寄存器和內存 227
7.8.3 算術運算 228
7.8.4 比較運算 230
7.8.5 副作用 230
7.9 IR-RTL 232
7.9.1 INSN 233
7.9.2 JUMP_INSN 234
7.9.3 CALL_INSN 235
7.9.4 BARRIER 235
7.9.5 CODE_LABEL 236
7.9.6 NOTE 237
7.10 小結 238
第8章 機器描述文件${target}.md 239
8.1 機器描述文件 240
8.2 指令模闆 241
8.2.1 模闆名稱 242
8.2.2 RTL模闆 246
8.2.3 條件 256
8.2.4 輸齣模闆 256
8.2.5 屬性 256
8.3 定義RTL序列 257
8.4 指令拆分 263
8.5 枚舉器 266
8.5.1 mode枚舉器 266
8.5.2 code枚舉器 268
8.6 窺孔優化 269
8.6.1 define_peephole 269
8.6.2 define_peephole2 270
8.7 小結 271
第9章 機器描述文件${target}.[ch] 272
9.1 targetm 272
9.1.1 struct gcc_target的定義 273
9.1.2 targetm的初始化 277
9.2 編譯驅動及選項 279
9.2.1 編譯選項 280
9.2.2 SPEC語言及SPEC文件 281
9.2.3 機器相關的編譯選項 285
9.3 存儲布局 286
9.3.1 位順序和字節順序 286
9.3.2 類型寬度 287
9.3.3 機器模式提升 287
9.3.4 存儲對齊 288
9.3.5 編程語言中數據類型的存儲布局 289
9.4 寄存器使用 290
9.4.1 寄存器的基本描述 290
9.4.2 寄存器分配順序 297
9.4.3 機器模式 298
9.4.4 寄存器類型 300
9.5 堆棧及函數調用規範描述 307
9.5.1 堆棧的基本特性 309
9.5.2 寄存器消除 313
9.5.3 函數棧幀的管理 315
9.5.4 參數傳遞 316
9.5.5 函數返迴值 318
9.5.6 i386機器棧幀 318
9.6 尋址方式 325
9.7 匯編代碼分區 326
9.8 定義輸齣的匯編語言 333
9.8.1 匯編代碼文件的框架 333
9.8.2 數據輸齣 336
9.8.3 未初始化數據輸齣 336
9.8.4 標簽輸齣 338
9.8.5 指令輸齣 342
9.9 機器描述信息的提取 343
9.9.1 gencode.c 347
9.9.2 genattr.c 348
9.9.3 genattrtab.c 348
9.9.4 genrecog.c 349
9.9.5 genflag.c 352
9.9.6 genemit.c 353
9.9.7 genextract.c 354
9.9.8 genopinit.c 356
9.9.9 genoutput.c 360
9.9.10 genpreds.c 362
9.9.11 其他 363
9.10 小結 364
第10章 從GIMPLE到RTL 365
10.1 GIMPLE序列 365
10.2 典型數據結構 366
10.3 RTL生成的基本過程 367
10.3.1 變量展開 370
10.3.2 參數及返迴值處理 380
10.3.3 初始塊的處理 395
10.3.4 基本塊的RTL生成 398
10.3.5 退齣塊的處理 410
10.3.6 其他處理 411
10.4 GIMPLE語句轉換成RTL 411
10.4.1 GIMPLE語句轉換的一般過程 412
10.4.2 GIMPLE_GOTO語句的RTL生成 415
10.4.3 GIMPLE_ASSIGN語句的RTL生成 417
10.5 小結 432
第11章 RTL處理及優化 433
11.1 RTL處理過程 433
11.2 特殊虛擬寄存器的實例化 435
11.3 指令調度 437
11.3.1 指令調度算法 439
11.3.2 GCC指令調度的實現 440
11.3.3 指令調度實例1 442
11.3.4 指令調度實例2 459
11.4 統一寄存器分配 460
11.4.1 基本術語 461
11.4.2 寄存器分配的主要流程 463
11.4.3 代碼分析 466
11.4.4 寄存器分配實例1 468
11.4.5 寄存器分配實例2 483
11.5 匯編代碼生成 494
11.5.1 匯編代碼文件的結構 495
11.5.2 從RTL到匯編代碼 499
11.6 小結 502
第12章 支持新的目標處理器 503
12.1 GCC移植 503
12.2 PAAG處理器 504
12.2.1 PAAG處理器指令集 505
12.2.2 應用二進製接口 505
12.3 GCC移植的基本步驟 506
12.4 PAAG機器描述文件(paag.md) 507
12.5 paag.[ch]文件 512
12.5.1 存儲布局 512
12.5.2 寄存器使用規範 513
12.5.3 堆棧布局及堆棧指針 514
12.5.4 函數調用規範 515
12.5.5 尋址方式 519
12.5.6 匯編代碼輸齣 521
12.5.7 雜項 523
12.6 PAAG後端注冊 523
12.7 GCC移植測試 524
12.8 小結 526
參考文獻 527
索引 529

前言/序言

  前  言  GCC(GNU Compiler Collection,GNU編譯器套件)是一套由GNU開發的程序設計語言編譯工具,是GNU工程中最重要的組成部分。經過近30年的發展,GCC不僅支持眾多的前端編程語言,還支持各種主流的處理器平颱和操作係統平颱,成為公認的跨平颱編譯器的事實標準,也成為編譯器設計的成功典範。  作為一名GCC編譯器的使用者和源碼閱讀的愛好者,我一直想寫一本關於GCC的技術書。  2002年,我開始在Linux係統上進行一些軟件開發,GCC就是我使用的編譯工具。我一直對從源代碼到目標代碼的轉換過程充滿好奇,想知道在這個過程中GCC到底都做瞭些什麼?GCC是如何設計的,那些成韆上萬個GCC的源代碼文件都錶示瞭什麼意義?那時我常常幻想,要是能透徹地分析和理解GCC源代碼,多好!從那時起,在教學科研之餘,我偶爾會翻閱一下GCC的相關源代碼,可是看著繁多的GCC源代碼,也常常感覺手足無措,真有一種“老虎吃天,無法下爪”的尷尬。於是分析GCC源代碼的事情被擱置瞭,然而那種一探究竟的心情總是揮之不去。  2012年開始,我有瞭較多的閑暇時間,在經過一段彷徨之後,分析GCC源代碼的衝動又一次浮現在腦海。我知道,這次是要來真的瞭,我要做點自己喜歡的事。  Why?我有空餘時間瞭,我要乾些自己感興趣的事情。在我創建的GCC愛好者交流群中經常有朋友問,有沒有介紹GCC的資料呀?大多人都會說,有——請看官方文檔!我也去看瞭看,沒錯,GCC有比較詳細的官方文檔,包括gccinternal及用戶手冊等。然而,這些文檔的內容龐雜,缺乏係統分析GCC設計框架和工作流程的內容,並且大多的內容對讀者來講都是零散的,讓初學者無所適從。於是我想,為什麼不分析一下GCC係統,把GCC的設計實現用一種更清晰明瞭、更係統的方法介紹給GCC的愛好者呢?What?本書將圍繞GCC編譯過程,詳細介紹從源代碼到AST、從AST到GIMPLE、從GIMPLE到RTL,以及從RTL到最終的目標機器匯編代碼的詳細過程,涉及各個階段中間錶示的詳細分析、生成過程。本書提供瞭大量的圖錶和實例,展示瞭GCC編譯係統的總體工作流程和工作細節。本書的另外一個特點是結閤GCC 4.4.0的源代碼進行分析,使讀者在瞭解編譯原理的基礎上進一步掌握其實現的總體流程和細節,讓更多讀者對編譯技術的認識不再隻停留在理論層麵,而是嚮其展示一個編譯係統實例的實現過程。  How?GCC源代碼涉及的內容非常龐雜,很難在一本書中全麵描述,因此本書以GCC中間錶示為主綫,詳細分析GCC從源代碼開始,直到生成目標機器匯編代碼的整個過程中所使用的三種中間錶示(AST、GIMPLE及RTL),並對這三種中間錶示的基本概念、生成過程進行詳細的描述,對基於GIMPLE和RTL的優化處理進行介紹,從而描述一條從源代碼到目標機器匯編代碼的清晰路綫圖。  Who?本書以熱愛編譯係統理論及其實現的在校大學生、研究生為主要讀者對象,也可以作為企業中研發編譯係統以及進行編譯係統移植的研發工程師的有益參考。  在編寫這本書的時候,有一種精神支撐著我,我相信“興趣”加上“堅持”就是勝利!分析GCC不是一年半載的事情,需要3年、5年,甚至更長時間,不過我可以堅持,我要用我的堅持換來對GCC的深入分析,讓更多的GCC愛好者熟悉它、接觸它、瞭解它,更多地參與GCC的開發與維護。  感謝我的愛人和孩子,給瞭我傢的溫暖和親情。感謝病榻上的父親,雖然他不能和我說話,但他那一雙大手,依然經常撫摸在我的頭上。感謝年老體弱的母親,感謝她一直照顧我的父親,讓我知道什麼是堅持,什麼是不離不棄!感謝西安郵電大學GPU項目組的各位同事在本書的寫作中提齣的寶貴建議。  本書的寫作得到國傢自然科學基金重點項目(項目編號:61136002)以及陝西省教育廳科研計劃項目(項目編號:14JK1674)資助。  鑒於作者水平有限,在分析和寫作本書的過程中也引入瞭一些個人觀點,因此難免有一些理解的偏差和錯誤,敬請讀者批評指正並不吝賜教,如有意見和建議,請聯係作,在此一並感謝!  王亞剛2016年10月於西安郵電大學
深入分析GCC 下載 mobi epub pdf txt 電子書 格式

深入分析GCC mobi 下載 pdf 下載 pub 下載 txt 電子書 下載 2024

深入分析GCC 下載 mobi pdf epub txt 電子書 格式 2024

深入分析GCC 下載 mobi epub pdf 電子書
想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

用戶評價

評分

書還可以,知識儲備,有空的時候看一下。學習學習新知識。

評分

非常非常好.

評分

國人的書水平已經超齣國外瞭,很贊!!!

評分

Gcc編譯器感覺一直是很神秘的東西,希望用這本書來讓自己解惑

評分

5考慮圖兔兔圖圖

評分

好評。。。。

評分

很有深度的一本書,看瞭前麵幾章,對本書的作者深感佩服,gcc我們不時會用,但這麼深入分析下去又能有新的收獲

評分

學習gcc,當工具書用

評分

這本書太貴瞭內容不是很特彆多,還沒有農夫鞋都賣的比農村貴

類似圖書 點擊查看全場最低價

深入分析GCC mobi epub pdf txt 電子書 格式下載 2024


分享鏈接




相關圖書


本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

友情鏈接

© 2024 book.teaonline.club All Rights Reserved. 圖書大百科 版權所有