| 书[0名0]: | 编译系统透视:图解编译原理|64293 |
| 图书定价: | 169元 |
| 图书作者: | [亲斤]设计团队 |
| 出版社: | [1机1] 械工业出版社 |
| 出版日期: | 2016/3/1 0:00:00 |
| ISBN号: | 9787111498582 |
| 开本: | 16开 |
| 页数: | 1041 |
| 版次: | 1-1 |
| 作者简介 |
| [亲斤]设计团队由中[0国0]科[0学0]院[0大0][0学0]的教师杨力祥发起,成立于世纪之交,团队成员全部都是杨力祥老师的得意弟子,现在他们是很多企业核心和支柱。[亲斤]设计团队不断发展、[0优0]胜劣汰、适者生存、自然形成。团队在计算 [1机1] [0领0]域中始终只对基础的、有体系的事情感兴趣,喜欢从根节点解决问题,目前已经在编译器和操作系统等[0领0]域取得了突破性的成果,具体如下: 1.图示化的编译器 成功研发出基于图形、图像(而非基于字符、语句)的图示化集成开发环境,直接由图形编译为可执行程序,中间不再转成一般的计算 [1机1] 语言。已经能够成功编译扫雷等界面应用程序,也可以成功编译Linux0.11这样的简单操作系统,编译结果可以正确boot运行。 2.安全操作系统 研发出全[亲斤]的安全操作系统。使用现有CPU、内核依据[亲斤]的原理设计而成,不需要安装任何防火墙和杀毒软件,就可以抵御一切已[0知0]、未[0知0]的网络入侵。此操作系统支持FTP的基础功能,兼容Linux。此操作系统曾经于2014年4月1日至2014年9月30日在互联网上悬赏1万美金进行入侵攻击测试,至今未有人攻破。 3.基于安全CPU的安全操作系统 根据[亲斤]的操作系统原理,团队还设计了包含全[亲斤]安全指令的CPU,以及由安全CPU支持的安全操作系统。目前安全CPU的指令设计已经完成,开发了安全CPU仿真平台及基于其上的全[亲斤]安全操作系统。操作系统可以全面支持Linux(技术上也可以做到全面支持Windows或其他操作系统)。一旦CPU硬件设计制造完成,就可以直接运行安全操作系统,实现真正的安全(EAL7)。 [亲斤]设计团队还将其对编译器和操作系统的研究理论成果集结成出版物,除本书外,还出版了《Linux内核设计的艺术》(2011年, [1机1] 械工业出版社)一书,版[0[0权0]0]输出到美[0国0]、韩[0国0],实现了[0国0]内计算 [1机1] 著作向美[0国0]输出的零突破。英文版被美[0国0]的MIT、Stanford、Cornell、UMD等100多所[0大0][0学0]图书馆及Library of Congress(美[0国0][0国0][0会0]图书馆)收藏。 |
| 内容简介 |
| 本书是编译原理[0领0]域的鸿篇巨著,中文版尚未出版,英文版[0[0权0]0]已经输出到了美[0国0]。本书的出版将在世界范围内产生重要影响。从以下多个角度讲,本书都具有重要的里程碑意义: 它次让编译原理不再像是一门高深晦涩的“数[0学0]课”,而是一个可以调试、可以接触、可以真切感受的理论体系。本书用1140余幅信息量巨[0大0]的运行时结构图和视频动画取代了同类书中复杂枯燥的数[0学0]公式,更加立体和直观,生动地将编译后的执行程序在内存中的运行时结构图展现了出来。 它次将GCC源代码、编译原理、运行时结构、编译系统原理(包含汇编与链接)的内在关系、逻辑与原理梳理清楚了,并将它们结合成一个整体,真正能够让读者透彻掌握编译器如何运行、如何设计,以及为什么要这么设计。 它是本系统解读著[0名0][0商0]用编译器GCC核心源代码的著作。GCC源代码一共有600万行,为了便于讲解和阅读,本书进行了取舍和裁剪,讲解了与编译本质相关的、核心的60万行代码。 全书一共8章,具体内容和逻辑如下: [0第0]1章以一个C程序(先简单,后复杂)的运行时结构为依托,对程序编译的整体过程做了宏观讲述,让读者对编译有一个整体认识,这样更容易理解后面的内容。 [0第0]2~6章通过实际的程序案例、结合GCC的源代码,根据程序编译的顺序和流程,依次讲解了词[0法0]分析、语[0法0]分析、中间结构和目标代码的生成,遵循了由易到难的原则,先是通过简单程序讲解清楚原理,然后通过复杂程序强化理解。 [0第0]7章讲解了与编译器紧密关联的汇编器和链接器,让读者对可执行程序的终生成有一个完整的了解。 [0第0]8章讲解了预处理,就编译器的执行顺序而言,预处理器的执行比较靠前,之所以放在后讲,是因为它比较[0独0]立,在读者已经了解整个编译过程之后再讲解,读者[0会0]更容易理解。 |
| 目录 |
作者简介 前言 [0第0]1章 运行时结构及编译过程概述 1 1.1 一个简单C程序的运行时结构 1 1.2 更为复杂C程序的运行时结构 16 1.3 编译过程概述 25 1.3.1 词[0法0]分析 25 1.3.2 语[0法0]分析 26 1.3.3 从语[0法0]树到中间代码再到目标代码 26 [0第0]2章 词[0法0]分析 28 2.1 词[0法0]分析概要说明 28 2.2 词[0法0]分析过程 31 2.3 状态转换图 36 2.3.1 状态转换图总体介绍 36 2.3.2 依托状态转换图展现词[0法0]分析过程 42 2.4 GCC实现词[0法0]分析的源代码 55 2.4.1 词[0法0]分析源代码总览 55 2.4.2 结合GCC源代码讲解词[0法0]分析过程 55 2.4.3 标识符、数字、字符和字符串的详细分析过程 65 [0第0]3章 语[0法0]分析 74 3.1 语[0法0]分析综述 74 3.2 语[0法0]分析思路 74 3.3 产生式 78 3.3.1 什么是产生式 78 3.3.2 产生式的具体示例 80 3.4 匹配产生式,消除左递归 89 3.4.1 用标准产生式做匹配,出现左递归 89 3.4.2 消除左递归 93 3.4.3 产生式的工作效率 97 3.5 提取左公因子,消除回溯 100 3.5.1 对“直接声明符”的产生式提取左公因子 100 3.5.2 用提取过左公因子的产生式再去匹配 102 3.5.3 对其他产生式都提取左公因子 103 3.5.4 函数声明和定义两部分产生式的合并 105 3.6 语[0法0]分析结果:语[0法0]树 107 3.7 GCC关于语[0法0]分析的源代码解析 112 3.7.1 GCC语[0法0]分析函数调用图 112 3.7.2 全部语句的语[0法0]分析 115 [0第0]4章 语[0法0]树到目标代码 217 4.1 总述语[0法0]树到中间代码的转化过程 217 4.2 目标代码到运行时结构的映射 224 4.3 语[0法0]树转高端gimple 232 4.3.1 语[0法0]树到高端gimple的总体步骤及运行时 236 4.3.2 高端gimple的实际数据结构 241 4.3.3 语[0法0]树转高端gimple的GCC源代码解析 246 4.4 高端gimple到低端gimple 286 4.4.1 高端gimple转低端gimple概述 286 4.4.2 高端gimple转化低端gimple的GCC代码解析 293 4.5 低端gimple到cfg 297 4.5.1 低端gimple到cfg的转化概述 297 4.5.2 低端gimple转cfg的实际过程 300 4.6 cfg转ssa 301 4.7 生成RTL 305 4.7.1 为何要有RTL 305 4.7.2 转化RTL阶段的主要步骤 306 4.7.3 确定初始RTL中的运行时信息 320 4.8 RTL生成目标代码(汇编) 332 4.8.1 汇编文件介绍 332 4.8.2 创建汇编文件 334 4.8.3 输出汇编文件总入口 334 4.8.4 全局变量写入汇编文件 335 4.8.5 函数写入汇编文件 340 [0第0]5章 语句拓展案例的编译过程 353 5.1 总述各个语句拓展案例的编译过程 353 5.2 if语句的语[0法0]分析 376 5.2.1 多个变量的声明语句语[0法0]分析 376 5.2.2 if语句的语[0法0]分析过程 381 5.2.3 if...else if语句的语[0法0]分析过程 387 5.3 带标号语句的语[0法0]分析 395 5.4 switch...case、goto、break语句的语[0法0]分析过程 399 5.4.1 switch...case 语句 399 5.4.2 goto语句 407 5.4.3 分析break语句 409 5.5 do...while、while、for语句的语[0法0]分析过程 420 5.5.1 do...while语句的语[0法0]分析 424 5.5.2 while语句的语[0法0]分析过程 433 5.5.3 for语句的语[0法0]分析过程 444 5.6 各种语句嵌套组合的语[0法0]分析过程 472 5.6.1 两条变量声明语句分析的结果 477 5.6.2 分析while循环语句 477 5.6.3 进入if进行分析 480 5.6.4 进入else进行分析 485 5.7 所有案例语[0法0]树转中间结构的过程 516 5.7.1 案例1的语[0法0]树转高端gimple的总体介绍 516 5.7.2 案例1的语[0法0]树转高端gimple的代码分析 528 5.7.3 案例1的高端gimple转低端gimple 552 5.7.4 案例1的低端gimple到cfg 552 5.7.5 转化RTL阶段的主要步骤 562 5.7.6 案例2的语[0法0]树转高端gimple 587 5.7.7 案例3的语[0法0]树转高端gimple 596 [0第0]6章 数据拓展案例的编译过程 612 6.1 数据拓展案例的编译过程总述 612 6.1.1 基础类型数据总述 612 6.1.2 用户自定义类型数据总述 617 6.1.3 指针类型数据总述 626 6.1.4 作用域和生存期总述 640 6.1.5 表达式总述 645 6.2 基础类型数据的语[0法0]分析过程 652 6.2.1 非浮点型数据的语[0法0]分析 653 6.2.2 浮点型数据的语[0法0]分析 662 6.3 复合类型数据的语[0法0]分析过程 670 6.3.1 数组的语[0法0]分析 670 6.3.2 枚举类型数据的语[0法0]分析 675 6.3.3 struct类型数据的语[0法0]分析 678 6.3.4 union类型数据的语[0法0]分析 683 6.3.5 自定义数据声明和使用的语[0法0]分析 684 6.4 指针类型数据的语[0法0]分析过程 693 6.4.1 对swap_point函数中指针的语[0法0]分析 693 6.4.2 对指针使用的语[0法0]分析 696 6.5 关于作用域和生存期的语[0法0]分析过程 705 6.5.1 C语言作用域和生存期概述 705 6.5.2 全局变量data语[0法0]分析中作用域相关处理过程 706 6.5.3 fun函数定义的语[0法0]分析中作用域相关处理 709 6.5.4 main函数定义中局部变量声明data作用域处理过程 716 6.5.5 main函数内部语句块中变量nCount作用域处理过程 719 6.5.6 main函数中引用变量data时选择相应声明节点的过程分析 719 6.5.7 main函数中引用变量nCount时选择相应声明节点的过程分析 720 6.5.8 main函数中退出内部语句块时更[亲斤]变量作用域过程分析 721 6.5.9 fun函数中静态变量temp生存期信息的语[0法0]分析 726 6.6 表达式的语[0法0]分析过程 728 6.6.1 if条件中的表达式语[0法0]分析 728 6.6.2 if条件下面“语句”部分的表达式语[0法0]分析 740 6.7 所有案例语[0法0]树转中间结构(RTL)的过程 754 6.7.1 基础类型数据语[0法0]树转高端gimple的过程 754 6.7.2 用户自定义数据语[0法0]树转高端gimple的过程 794 6.7.3 指针类型数据语[0法0]树转高端gimple的过程 838 6.7.4 作用域和生存期案例语[0法0]树转高端gimple的过程 878 6.7.5 复杂表达式案例的语[0法0]树转高端gimple的过程 887 [0第0]7章 汇编与链接 934 7.1 汇编器 934 7.1.1 详细介绍汇编指令到 [1机1] 器指令的转化 934 7.1.2 .o文件格式总体情况介绍 953 7.1.3 代码段、数据段以及其他各个表项间的关系 962 7.1.4 从汇编文件到目标文件的实现 967 7.1.5 汇编器处理的源代码分析 973 7.2 链接器 985 7.2.1 .o文件链接总体介绍 985 7.2.2 多个.o文件链接时通过符号表建立关系 989 7.2.3 链接时统一计算地址并回填 997 7.2.4 链接器源代码介绍 999 7.2.5 库函数的链接 1002 7.2.6 动态链接 1002 [0第0]8章 预处理 1012 8.1 文件包含 1012 8.2 宏定义 1017 8.3 条件编译 1019 8.4 带参数的宏定义 1022 附录 RTX定义 1031 作者的话 1039 |
| 编辑推荐 |
| 本书的出版具有里程碑意义: 它**次让编译原理不再像是一门高深晦涩的“数[0学0]课”,而是一个可以调试、可以接触、可以真切感受的理论体系。本书用1140余幅信息量巨[0大0]的运行时结构图和视频动画取代了同类书中复杂枯燥的数[0学0]公式,更加立体和直观,生动地将编译后的执行程序在内存中的运行时结构图展现了出来; 它**次将GCC源代码、编译原理、运行时结构、编译系统原理(包含汇编与链接)的内在关系、逻辑与原理梳理清楚了,并将它们结合成一个整体。真正能够让读者透彻掌握编译器如何运行和如何设计,以及为什么要这么设计; 它是**本系统解读著[0名0][0商0]用编译器GCC核心源代码的著作,GCC源代码一共有600万行,为了便于讲解和阅读,本书进行了取舍和裁剪,讲解了与编译本质相关的*核心的60万行代码。 |
这本书的书名着实吸引人,尤其那个“包邮”字眼,总让人觉得物超所值,还没翻开就先有了好心情。我一直对程序是如何一步步变成机器语言感到好奇,也曾尝试阅读过一些相关的学术文献,但那些厚重的理论和抽象的概念常常让我望而却步。我期待这本书能够提供一种更加直观、易于理解的方式来讲解编译原理。比如,它是否能通过大量的图示来解释词法分析、语法分析、语义分析、中间代码生成、代码优化以及目标代码生成这些核心过程?我希望它能像一本“故事书”一样,将那些复杂的算法和数据结构融入到一个清晰的叙事中,让读者能够循序渐进地掌握编译的奥秘。尤其对于“图解”这个词,我寄予厚望,希望它能用生动的插图、流程图甚至类比来拆解每一个概念,让那些原本枯燥的术语变得鲜活起来。我希望能看到不同类型的编译器架构被清晰地对比,例如,前端、后端的分离,以及它们各自承担的职责。同时,对于一些经典的编译技术,比如LL(1)解析器、LR解析器、AST(抽象语法树)的构建与遍历,如果能有详细的图示说明其工作流程,那将是对我极大的帮助。我购买它的初衷,很大程度上是希望能找到一本能够“点亮”编译原理的入门读物,让我在面对实际编译器的开发或者对编译器感兴趣的研究时,能有一个扎实的基础,不至于在浩瀚的技术海洋中迷失方向。
评分看到“图解编译原理”这个副标题,我心头一动,这正是我想寻找的那种学习方式。过去接触编译原理时,最大的困扰就是概念抽象,文字描述往往让人云里雾里。我渴望能够通过直观的图示来理解那些复杂的流程和结构。这本书是否能用清晰的图表来展示词法分析器如何将源代码转化为Token流?语法分析器又是如何根据文法规则构建出抽象语法树(AST)的?我希望它能生动地描绘出AST的层级结构,以及各种遍历算法的工作过程。对于中间代码的生成,比如三地址码、P-code等,我希望看到它们是如何从AST转换而来的,以及它们在后续优化和代码生成中的作用。此外,我对编译器的错误处理机制也很感兴趣,比如,如何检测语法错误和语义错误,以及如何生成有意义的错误提示信息。如果书中能提供一些关于如何构建递归下降解析器或者算符优先解析器的详细图解,那我将非常欣喜。我也期待能够看到关于类型检查、变量作用域、函数调用约定等语义分析过程的图示化解释。总而言之,我希望这本书能够成为我学习编译原理的“拐杖”,让那些晦涩难懂的知识变得触手可及,最终能够让我自己动手去实现一些简单的编译功能。
评分这本书的书名,尤其是“64293”这个数字,让我联想到它可能是一个系列中的一员,或者是一个非常精细的分类。这让我对内容的深度和广度有了更高的期待。作为一名对计算机科学基础理论充满热情的研究生,我一直渴望能够系统地学习编译原理,并理解其在现代软件开发中的核心地位。我希望这本书能够提供一种严谨而不失生动的讲解方式,既能涵盖编译器的基本组成部分,如前端(词法分析、语法分析、语义分析)、优化器和后端(代码生成),又能深入探讨一些高级的主题。例如,书中是否会详细阐述各种类型的解析技术,并对其复杂度进行分析?对于代码优化,是否会涉及寄存器分配、循环优化、内联展开等经典算法?我还特别关注编译器如何处理面向对象语言特性,比如虚函数、继承以及多态性的编译实现。我期望这本书能够提供一些关于编译器工具链的介绍,比如GCC、Clang等,并分析它们的内部架构和设计理念。如果书中能够包含一些关于静态分析、动态分析以及程序验证方面的知识,那就更加完美了。我希望它不仅能让我理解“是什么”,更能让我理解“为什么”以及“如何做”,为我未来在相关领域的研究打下坚实的基础。
评分这本书的书名,特别是“编译系统透视”这一部分,让我产生了一种“一窥究竟”的强烈愿望。我个人对底层技术有着天然的兴趣,而编译器无疑是连接高级语言和底层硬件的桥键,其内部运作机制一直是我非常想深入了解的领域。我希望这本书能够打破一些传统编译原理教材的刻板印象,提供一些更具实践性和前瞻性的视角。例如,书中是否会涉及到现代编译技术的一些发展趋势,比如LLVM等框架的架构设计理念?它是否会详细讲解如何构建一个简单的解释器或者编译器,并提供相应的代码示例?我特别关注“透视”这个词,它暗示着一种深入到内部的观察,我期望作者能够庖丁解牛般地剖析编译器的各个组成部分,并解释它们是如何协同工作的。我希望它能超越纯粹的理论讲解,提供一些关于如何进行编译器性能优化的思路和技巧。例如,对于代码优化阶段,书中是否会列举一些常见的优化算法,并分析它们的优劣以及在实际应用中的效果?我希望能够看到一些关于编译器设计的最佳实践,以及在构建复杂编译系统时可能遇到的挑战和解决方案。如果书中能够涵盖一些不同编程语言的编译实现案例,比如C++、Java或者Python,并进行对比分析,那将是极具价值的。我期待这本书能够为我打开一扇通往编译器世界的大门,让我能够更自信地去探索和理解这些复杂的系统。
评分这个书名,尤其是“包邮”和“图解”这两个词,让我觉得这本书非常接地气,并且充满了学习的乐趣。我之前在学习编译原理的时候,总感觉自己是在跟一大堆枯燥的理论打交道,缺乏一种将知识融会贯通的感觉。我希望这本书能够提供一种全新的视角,让我在轻松愉快的氛围中掌握编译器的核心概念。我非常期待书中能够用大量的图例来解释各种抽象的概念,比如,如何通过流程图展示词法分析器的工作流程,如何用树状图来表示抽象语法树,以及如何用示意图来解释代码优化过程。我希望它能够帮助我理解变量的作用域、类型检查、内存管理等语义分析的关键环节。同时,我也希望这本书能够提供一些实际的例子,比如,如何从一个简单的C语言片段出发,逐步生成机器码。我关注的是学习的“过程”和“方法”,希望能从这本书中学习到如何一步步地去构建一个自己的编译器,即使是一个非常简单的原型。我希望这本书能够成为我的“学习伙伴”,在遇到困难的时候,能够提供清晰的指引和有效的解决方案,让我能够真正理解并掌握编译原理的精髓,并能够将其应用到实际的编程实践中。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有