发表于2024-11-10
书[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文件链接时通过符号 包邮 编译系统透视:图解编译原理|64293 下载 mobi epub pdf txt 电子书 格式 包邮 编译系统透视:图解编译原理|64293 mobi 下载 pdf 下载 pub 下载 txt 电子书 下载 2024包邮 编译系统透视:图解编译原理|64293 下载 mobi pdf epub txt 电子书 格式 2024 包邮 编译系统透视:图解编译原理|64293 下载 mobi epub pdf 电子书用户评价
评分
评分
评分
评分
评分
评分
评分
评分
评分
类似图书 点击查看全场最低价
包邮 编译系统透视:图解编译原理|64293 mobi epub pdf txt 电子书 格式下载 2024 分享链接相关图书
|