深入分析GCC+编译系统透视:图解编译原理 2本 源码分析系列书籍

深入分析GCC+编译系统透视:图解编译原理 2本 源码分析系列书籍 pdf epub mobi txt 电子书 下载 2025

承接 住宅 自建房 室内改造 装修设计 免费咨询 QQ:624617358 一级注册建筑师 亲自为您回答、经验丰富,价格亲民。无论项目大小,都全力服务。期待合作,欢迎咨询!QQ:624617358
想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
店铺: 蓝墨水图书专营店
出版社: 机械工业出版社
ISBN:9787111556329
商品编码:10258884350

具体描述

编译系统透视:图解编译原理

深入分析GCC 源码分析系列书籍 GCC设计与实现 GCC总体设计 代码架构

9787111556329 9787111498582

深入分析GCC

 

定价:¥99.00

 

 

基本信息

 

作者:王亚刚  

丛书名:源码分析系列

出版社:机械工业出版社

ISBN:9787111556329

上架时间:2017-2-10

出版日期:2017 年2月

开本:16开

版次:1-1

所属分类: 计算机

 

编辑推荐

 

国内不可多得的全面系统介绍GCC设计与实现的书籍,对GCC的总体设计、主要代码架构及实现细节进行了深入的分析和总结本书结合GCC4 4.0源代码,围绕GCC编译过程,以GCC中的中间表示AST、GlMPLE及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 

 

  • 版 次:
  • 页 数:
  • 字 数:277
  • 印刷时间:
  • 开 本:128开
  • 纸 张:胶版纸
  • 印 次:1
  • 包 装:平装
  • 是否套装:否
  • 国际标准书号ISBN:9787111498582
  • 所属分类:>>>

本书的出版具有里程碑意义:

它一次让编译原理不再像是一门高深晦涩的“数学课”,而是一个可以调试、可以接触、可以真切感受的理论体系。本书用1140余幅信息量巨大的运行时结构图和视频动画取代了同类书中复杂枯燥的数学公式,更加立体和直观,生动地将编译后的执行程序在内存中的运行时结构图展现了出来;

它一次将GCC源代码、编译原理、运行时结构、编译系统原理(包含汇编与链接)的内在关系、逻辑与原理梳理清楚了,并将它们结合成一个整体。真正能够让读者透彻掌握编译器如何运行和如何设计,以及为什么要这么设计;

它是一本系统解读著名商用编译器GCC核心源代码的著作,GCC源代码一共有600万行,为了便于讲解和阅读,本书进行了取舍和裁剪,讲解了与编译本质相关的核心的60万行代码。内容简介

全书一共8章,具体内容和逻辑如下:

第1章以一个C程序(先简单,后复杂)的运行时结构为依托,对程序编译的整体过程做了宏观讲述,让读者对编译有整体认识,这样更容易理解后面的内容。

第2~6章通过实际的程序案例、结合GCC的源代码,根据程序编译的顺序和流程,依次讲解了词法分析、语法分析、中间结构和目标代码的生成,遵循了由易到难的原则,先是通过简单程序讲解清楚原理,然后再通过复杂程序强化理解。

第7章讲解了与编译器紧密关联的汇编器和链接器,能让读者对可执行程序的终生成有一个完整的了解。

第8章讲解了预处理,就编译器的执行顺序而言,预处理器的执行比较靠前,之所以放在后讲,是因为它比较独立,在读者已经了解整个编译过程中之后再讲解,读者会更容易理解。作者简介新设计团队
1.图示化的编译器
成功研发出基于图形、图像(而非基于字符、语句)的图示化集成开发环境,直接由图形编译为可执行程序,中间不再转成一般的计算机语言。已经能够成功的编译扫雷等界面应用程序,也可以成功编译linux0.11这样的简单操作系统,编译结果可以正确boot运行。
2.安全操作系统
研发出全新的安全操作系统。使用现有CPU,内核依据新的原理设计而成,不需要安装任何防火墙和杀毒软件,就可以抵御一切已知、未知的网络入侵。此操作系统支持ftp的基础功能,兼容Linux。此操作系统曾经于2014年4月1日至2014年9月30日在互联网上悬赏1万美金进行入侵攻击测试,至今未有人攻破。
3.基于安全CPU的安全操作系统

用户评价

评分

评分

评分

评分

评分

评分

评分

评分

评分

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.qciss.net All Rights Reserved. 图书大百科 版权所有