自己动手构造编译系统:编译、汇编与链接

自己动手构造编译系统:编译、汇编与链接 pdf epub mobi txt 电子书 下载 2026

☆☆☆☆☆
出版者:机械工业出版社 作者:范志东 出品人: 页数:0 译者: 出版时间:2016-8-2 价格:CNY 69.00 装帧:平装 isbn号码:9787111543558 丛书系列:
图书标签
  • 编译器
  • 编译原理
  • 编译
  • 计算机
  • 编译系统
  • 计算机科学
  • 计算机科学-语言与编译器
  • 语言与编译器
  • 编译系统
  • 汇编
  • 链接
  • 编程
  • 计算机组成
  • 系统编程
  • 编译原理
  • 软件工程
  • 逆向工程
  • 底层开发
想要找书就要到 小哈图书下载中心
立刻按 ctrl+D 收藏本页
你会得到大惊喜!!

具体描述

以下是一份关于一本名为《计算机系统底层原理与实践:从硬件到操作系统的跨越》的图书简介。 --- 《计算机系统底层原理与实践:从硬件到操作系统的跨越》 内容简介 在当今信息技术高速发展的时代,软件应用层面的抽象日益深入,使得许多开发者对底层硬件和操作系统内核的运作机制感到陌生。本书旨在填补这一知识鸿沟,为读者构建一座坚实的桥梁,连接起数字逻辑、处理器架构、内存管理、系统调用乃至操作系统核心的设计与实现。我们不专注于特定编程语言的语法或框架的使用,而是深入探索计算机系统最核心、最基础的原理,帮助读者理解“代码是如何真正运行起来的”。 本书分为四个主要部分,层层递进,系统性地展现现代计算机系统的全貌。 第一部分:基础数字逻辑与硬件架构的基石 本部分从最基础的层面出发,为后续的操作系统和系统编程打下坚实的理论基础。 我们首先回顾了数字逻辑电路的基本概念,如布尔代数、逻辑门、组合逻辑与时序逻辑。重点阐述了如何使用这些基本元件构建更复杂的电路单元,如加法器、多路选择器和触发器。 随后,我们将视角提升到中央处理器(CPU)的微架构层面。详细解析了指令集架构(ISA)的重要性,特别是RISC-V架构的开放性和现代性如何影响编译器和操作系统的设计。读者将学习到流水线技术、分支预测、缓存层次结构(L1、L2、L3)的工作原理及其对程序性能的深远影响。我们深入探讨了数据通路的设计,包括取指、译码、执行、访存和写回等阶段,并分析了指令级并行(ILP)的实现机制。内存访问的延迟和带宽是现代计算的瓶颈,因此,本部分将详细剖析缓存一致性协议(如MESI)和虚拟内存系统与TLB(转译后备缓冲器)的协同工作方式。 第二部分:C语言的底层映射与内存的生命周期 理解C语言的抽象层级对于系统编程至关重要。本部分专注于探究C语言的“魔术”是如何在机器码层面实现的。 我们将深入剖析C语言的类型系统、指针算术以及函数调用的机制。重点讲解栈帧结构——什么是局部变量、参数传递、返回地址以及基址指针(EBP/RBP)的作用。通过跟踪程序的执行流程,读者将清楚地看到函数调用在汇编层面是如何被实现为一系列的 `push`, `call`, `pop`, `ret` 指令序列。 内存管理是本部分的核心。我们不仅讨论了C语言中的动态内存分配(如`malloc`和`free`)在用户空间是如何实现的,更重要的是,揭示了它们背后操作系统内核提供的系统调用接口。我们将分析内存分配器(如`dlmalloc`或更现代的jemalloc/tcmalloc)的设计思想,例如如何处理碎片化、管理空闲块列表以及实现内存的复用。此外,对数据在内存中的对齐要求(Padding)和字节序(Endianness)的讨论,将帮助读者编写出真正具有可移植性的底层代码。 第三部分:操作系统内核的核心机制 这是本书的技术核心,聚焦于操作系统如何管理硬件资源和为用户程序提供抽象。 我们将从头开始构建一个简化的操作系统的核心概念模型。重点关注进程与线程的管理。进程的创建(`fork`的原理)、上下文切换(Context Switching)的开销与实现细节将被详尽阐述,包括保存和恢复寄存器状态、更新页表等关键步骤。 中断和异常处理是操作系统响应外部事件和内部错误的基础。本部分详细解释了中断描述符表(IDT)、系统调用机制(Syscall)的流程,以及硬件中断如何被内核捕获并分派给相应的驱动程序或内核函数。 内存虚拟化是现代操作系统的标志性成就。我们将深入探讨分页机制,包括页表的结构(多级页表),缺页异常(Page Fault)的处理流程,以及内核如何通过页表转换实现进程间的内存隔离。关于内存的分配策略,如伙伴系统(Buddy System)和slab分配器,也将被详细分析,揭示内核是如何高效地管理物理内存的。 第四部分:并发、调度与I/O系统 在多核处理器成为主流的今天,并发编程的正确性与效率至关重要。 本部分首先探讨并发模型,对比多进程与多线程的优劣及其在内核中的实现。随后,我们将深入研究并发控制原语的底层实现,包括互斥锁(Mutexes)、信号量(Semaphores)的硬件原子操作(如Test-and-Set或Compare-and-Swap)支持。我们将分析死锁的条件、检测与避免策略,以及现代操作系统如何利用硬件提供的原子指令来构建无锁(Lock-Free)或低锁数据结构。 进程调度是决定系统性能的关键。我们将考察不同的调度算法,如分时轮转(Round Robin)、优先级调度,以及它们在实际内核(如Linux的CFS或早期Unix的SVR4调度器)中的具体实现。调度器的目标是最大化系统吞吐量同时保证公平性,我们将分析这些目标之间的权衡。 最后,我们将探讨I/O系统的复杂性。从字符设备到块设备,从中断驱动的I/O到DMA(直接内存访问)的工作流程,读者将了解数据如何高效地在外部设备和内存之间传输,而无需CPU的频繁干预。我们将分析缓冲和缓存机制在I/O子系统中的作用,以及异步I/O模型如何提高系统的响应能力。 本书特色 本书的特点在于其高度的实践性和对底层机制的揭示性。我们不满足于“调用API”,而是探究“API如何工作”。通过对经典系统设计模式和现代处理器特性的深入剖析,读者将能够从根本上理解软件性能瓶颈的来源,设计出更健壮、更高效的系统级软件,并能更自信地调试那些发生在抽象层之下的复杂错误。无论是计算机科学专业的学生、系统程序员还是希望深入理解计算机本质的工程师,本书都将提供一次从零开始、全面构建系统认知图景的宝贵旅程。

作者简介

范志东,就职于腾讯数据平台部,负责腾讯大数据平台的产品化,涉及自动化部署、应用调度、交互分析、集群监控、性能调优等,对开源工具Ambari、Hadoop、Spark等有深入的了解。在校期间屡次获得国家奖学金和励志奖学金。独立开发了基于Intelx86指令集的自定义类c语言的编译系统,包括编译器、汇编器与链接器的实现,对计算机程序的加载和运行原理有深刻的认识。深入分析过Linux内核关于CPU功耗方面的代码。爱好广泛,对编程语言、操作系统、编译系统、计算机安全、分布式系统有着浓厚的兴趣。闲暇时会在技术博客上分享自己的学习心得,期望通过互联网把获得知识的快乐心情传递出去。参与了“十一五”校级立项正式出版教材《汁算机操作系统原理》以及全国自学考试教材《计算机应用技术》编写的相关工作。

张琼声,湖北省松滋县人,中国石油大学(华东)计算机与通信工程学院副教授,硕士生导师。主讲课程:《操作系统》《操作系统课程实习》和《嵌入式操作系统》。主持的《计算机操作系统》课程被评为校级精品课,先后获得中国石油大学优秀教学研究成果一、二、三等奖各一项;曾获评中国石油大学优秀教师、山东省优秀学士论文指导教师;主持或参与科研、教研项目十四项。专业及研究兴趣为系统软件开发技术,包括:操作系统、编译系统、计算机系统安全性。发表科研、教学论文二十余篇。参与翻译《深入理解Linux内核》第3版,编著“十一五”校级立项正式出版教材《计算机操作系统原理》、主编全国自学考试教材《计算机应用技术》。

目录信息

序
前言
第1章 代码背后 1
1.1 从编程聊起 1
1.2 历史渊源 2
1.3 GCC的工作流程 3
1.3.1 预编译 4
1.3.2 编译 5
1.3.3 汇编 6
1.3.4 链接 7
1.4 设计自己的编译系统 8
1.5 本章小结 9
第2章 编译系统设计 11
2.1 编译程序的设计 11
2.1.1 词法分析 12
2.1.2 语法分析 13
2.1.3 符号表管理 14
2.1.4 语义分析 15
2.1.5 代码生成 16
2.1.6 编译优化 16
2.2 x86指令格式 18
2.3 ELF文件格式 19
2.4 汇编程序的设计 21
2.4.1 汇编词法、语法分析 22
2.4.2 表信息生成 23
2.4.3 指令生成 24
2.5 链接程序的设计 25
2.5.1 地址空间分配 25
2.5.2 符号解析 26
2.5.3 重定位 27
2.6 本章小结 27
第3章 编译器构造 29
3.1 词法分析 29
3.1.1 扫描器 30
3.1.2 词法记号 32
3.1.3 有限自动机 36
3.1.4 解析器 40
3.1.5 错误处理 53
3.2 语法分析 55
3.2.1 文法定义 55
3.2.2 递归下降子程序 65
3.2.3 错误处理 70
3.3 符号表管理 74
3.3.1 符号表数据结构 75
3.3.2 作用域管理 78
3.3.3 变量管理 82
3.3.4 函数管理 88
3.4 语义分析 93
3.4.1 声明与定义语义检查 93
3.4.2 表达式语义检查 95
3.4.3 语句语义检查 97
3.4.4 错误处理 98
3.5 代码生成 101
3.5.1 中间代码设计 102
3.5.2 程序运行时存储 105
3.5.3 函数定义与return语句翻译 108
3.5.4 表达式翻译 110
3.5.5 复合语句与break、continue
语句翻译 120
3.5.6 目标代码生成 132
3.5.7 数据段生成 141
3.6 本章小结 145
第4章 编译优化 147
4.1 数据流分析 149
4.1.1 流图 149
4.1.2 数据流分析框架 152
4.2 中间代码优化 155
4.2.1 常量传播 155
4.2.2 复写传播 167
4.2.3 死代码消除 172
4.3 寄存器分配 177
4.3.1 图着色算法 177
4.3.2 变量栈帧偏移计算 182
4.4 窥孔优化 187
4.5 本章小结 190
第5章 二进制表示 191
5.1 x86指令 191
5.1.1 指令前缀 192
5.1.2 操作码 194
5.1.3 ModR/M字段 196
5.1.4 SIB字段 198
5.1.5 偏移 201
5.1.6 立即数 201
5.1.7 AT&T汇编格式 202
5.2 ELF文件 204
5.2.1 文件头 205
5.2.2 段表 207
5.2.3 程序头表 209
5.2.4 符号表 213
5.2.5 重定位表 214
5.2.6 串表 215
5.3 本章小结 217
第6章 汇编器构造 219
6.1 词法分析 220
6.1.1 词法记号 220
6.1.2 有限自动机 222
6.2 语法分析 223
6.2.1 汇编语言程序 223
6.2.2 数据定义 225
6.2.3 指令 226
6.3 符号表管理 227
6.3.1 数据结构 228
6.3.2 符号管理 230
6.4 表信息生成 234
6.4.1 段表信息 235
6.4.2 符号表信息 238
6.4.3 重定位表信息 239
6.5 指令生成 246
6.5.1 双操作数指令 247
6.5.2 单操作数指令 251
6.5.3 零操作数指令 254
6.6 目标文件生成 255
6.7 本章小结 261
第7章 链接器构造 263
7.1 信息收集 264
7.1.1 目标文件信息 264
7.1.2 段数据信息 266
7.1.3 符号引用信息 268
7.2 地址空间分配 269
7.3 符号解析 272
7.3.1 符号引用验证 274
7.3.2 符号地址解析 276
7.4 重定位 277
7.5 程序入口点与运行时库 281
7.6 可执行文件生成 283
7.7 本章小结 290
参考文献 291
· · · · · · (收起)

读后感

☆☆☆☆☆

《自己动手构造编译系统 编译、汇编与链接》一书是一本出自华章值得IT阅读的好书,如果对编译原理感兴趣想要深入研究的同学,可以读该书对编译过程有个了解,当然也可以先读该书做铺垫,然后再读经典的“龙书”进行深入学习,该书设计内容为编译器原理、linux c编程、汇编语言...

☆☆☆☆☆

《自己动手构造编译系统 编译、汇编与链接》一书是一本出自华章值得IT阅读的好书,如果对编译原理感兴趣想要深入研究的同学,可以读该书对编译过程有个了解,当然也可以先读该书做铺垫,然后再读经典的“龙书”进行深入学习,该书设计内容为编译器原理、linux c编程、汇编语言...

☆☆☆☆☆

《自己动手构造编译系统 编译、汇编与链接》一书是一本出自华章值得IT阅读的好书,如果对编译原理感兴趣想要深入研究的同学,可以读该书对编译过程有个了解,当然也可以先读该书做铺垫,然后再读经典的“龙书”进行深入学习,该书设计内容为编译器原理、linux c编程、汇编语言...

☆☆☆☆☆

《自己动手构造编译系统 编译、汇编与链接》一书是一本出自华章值得IT阅读的好书,如果对编译原理感兴趣想要深入研究的同学,可以读该书对编译过程有个了解,当然也可以先读该书做铺垫,然后再读经典的“龙书”进行深入学习,该书设计内容为编译器原理、linux c编程、汇编语言...

☆☆☆☆☆

《自己动手构造编译系统 编译、汇编与链接》一书是一本出自华章值得IT阅读的好书,如果对编译原理感兴趣想要深入研究的同学,可以读该书对编译过程有个了解,当然也可以先读该书做铺垫,然后再读经典的“龙书”进行深入学习,该书设计内容为编译器原理、linux c编程、汇编语言...

用户评价

☆☆☆☆☆

我的学习风格偏向于实践,我总是认为,只有亲手做过,才能真正理解。当我看到《自己动手构造编译系统:编译、汇编与链接》这本书名的时候,我立刻感觉到这正是我一直在寻找的那本书。我对编译、汇编和链接这些概念并不陌生,但总觉得缺少了点什么——那就是亲手去实现的体验。很多书籍会讲解这些过程的原理,但很少有能够带领读者真正去构建一个完整系统的。这本书的书名承诺的“自己动手”,让我看到了希望。我希望这本书能够提供详细的步骤和清晰的代码示例,让我能够跟着书中的指导,一步一步地搭建起自己的编译系统。我迫不及待地想了解,如何从一个简单的语言设计开始,逐步实现词法分析器、语法分析器、代码生成器,以及最终的汇编器和链接器。这不仅仅是学习知识的过程,更是一种创造的过程。我希望这本书能成为我手中的蓝图和指南,让我能够将抽象的理论转化为具体的、可以运行的成果,从而获得一种巨大的成就感和对计算机底层运作的深刻洞察。

☆☆☆☆☆

我一直对计算机的工作原理充满好奇,尤其是代码是如何转化为可执行文件的过程。在学习过程中,我接触过很多关于编译器、汇编器和链接器的资料,但往往感觉它们离我的实际操作有点距离。许多书籍更侧重于理论阐述,而缺乏实际操作的指导,让我难以将理论知识转化为动手能力。而《自己动手构造编译系统:编译、汇编与链接》这本书的书名,直接点出了其核心价值——“自己动手”。这让我看到了一个将理论与实践完美结合的可能性。我期待这本书能够提供一条清晰的路径,带领我一步步地构建自己的编译系统。我希望能够学习到如何进行词法分析,如何设计和实现语法分析器,如何进行中间代码生成,以及如何处理汇编和链接的复杂过程。这本书名本身就包含了一个完整的旅程,从最基础的编译,到更底层的汇编,再到最终的链接,每一个环节都充满了挑战,也充满了学习的乐趣。我相信,通过这本书的指导,我能够更深入地理解计算机底层是如何工作的,并为我未来的软件开发之路打下坚实的基础。

☆☆☆☆☆

在我的计算机学习历程中,我发现自己越来越倾向于深入了解技术背后的运作机制,而不仅仅是停留在API的使用层面。编译、汇编和链接,这三个词汇在我心中代表着软件生命周期的起点,是代码真正“活”起来的关键。《自己动手构造编译系统:编译、汇编与链接》这本书的书名,直接击中了我的痛点和兴趣点。我曾经尝试过阅读一些相关的文献,但往往因为缺乏系统性的实践指导,难以建立起完整的认知。《自己动手》这一点,预示着这本书会提供一条切实可行的路径,让我能够亲手去构建、去调试,去体验这个过程中的每一个细节。我期待这本书能够带领我从一个简单的编程语言开始,一步步构建起前端的解析器,中端的代码生成器,以及后端的汇编器和链接器。我希望能通过这本书,理解不同阶段的挑战,掌握必要的工具和技术,最终能够实现一个能够工作的编译系统。这对我来说,不仅是知识的积累,更是一种能力的提升,是对计算机底层运作原理的一次深刻的探索。

☆☆☆☆☆

作为一名对计算机科学充满热情的自学者,我一直在寻找一本能够深入浅出地讲解编译过程的图书。当我看到《自己动手构造编译系统:编译、汇编与链接》这本书名时,我立刻被它所吸引。我深知,理解编译、汇编和链接是掌握计算机底层运作的关键。以往我阅读的资料,往往要么过于理论化,要么过于碎片化,难以形成一个完整的知识体系。这本书的书名传递出的信息非常明确:它将引导读者亲手完成这个复杂而精妙的过程。这意味着,我不仅能学到理论知识,更能通过实践来巩固和深化这些知识。我尤其期待书中关于如何从零开始构建一个编译器、一个汇编器以及一个链接器的具体指导。我知道这其中涉及许多复杂的算法和数据结构,比如词法分析、语法分析、语义分析、代码生成、符号表管理、重定位等等。我希望这本书能够提供清晰的步骤、详细的代码示例和易于理解的解释,帮助我逐步攻克这些难关。能够亲手打造自己的工具链,对我来说是一种极大的成就感,也是对自身技术能力的一次全面检验。

☆☆☆☆☆

我一直以来都对计算机的“魔法”感到着迷,尤其是当人类的语言转化为机器能懂的指令时,这个过程背后究竟隐藏着怎样的逻辑和技术?《自己动手构造编译系统:编译、汇编与链接》这本书的书名,就如同一个邀请函,邀请我踏入这个神秘的领域。我渴望的不是对现有工具的简单介绍,而是能够亲手参与到这个构造过程中。这本书的“自己动手”几个字,正是我所期待的,它意味着我将不再只是一个旁观者,而是成为一个亲手实践的创造者。我希望这本书能够提供从头开始构建一个编译系统的详细指南,让我能够理解如何将源代码转化为中间表示,再到生成机器码,最后通过汇编器和链接器生成可执行文件。这个过程必然涉及复杂的算法和精妙的设计,而这本书正是我的向导。我希望能通过这本书,不仅掌握编译、汇编、链接的理论知识,更能获得将这些理论付诸实践的能力,从而对计算机的底层运行机制有一个更深刻、更直观的理解。

☆☆☆☆☆

作为一个喜欢刨根问底的程序员,我一直对编译、汇编和链接的过程感到着迷。我深知,理解这些底层机制对于提升编程能力至关重要,但以往的资料大多停留在理论层面,缺乏实践的指导。《自己动手构造编译系统:编译、汇编与链接》这本书的书名,直接打动了我。它传达了一个核心信息:这本书将带领读者亲手去构建一个完整的编译系统。我非常期待能够通过这本书,学习如何从头开始设计和实现一个编译器,包括词法分析、语法分析、语义分析,以及代码生成。同时,我也希望能深入了解汇编器和链接器的工作原理,以及如何处理符号表、重定位等关键问题。能够亲手搭建这样一个复杂的系统,对我而言是一种极大的挑战,也是一次宝贵的学习机会。我希望这本书能够成为我的实践指南,让我能够将理论知识转化为实际操作,从而更深入地理解计算机的运行机制,为我未来的职业发展打下坚实的基础。

☆☆☆☆☆

我一直以来都对计算机科学的底层原理充满探究欲,特别是代码从人类可读的形式转化为机器可执行指令的整个过程。编译、汇编和链接,这三个概念在我学习的道路上始终占据着核心地位,但我总觉得缺少一本能够让我“亲手”去实践的指导书。《自己动手构造编译系统:编译、汇编与链接》这本书的书名,恰恰点出了我内心深处的渴望。我喜欢通过实践来学习,去理解每一个步骤背后的逻辑和实现方式。我希望这本书能够为我提供一条清晰的、可操作的路径,让我能够从零开始,逐步构建起一个属于自己的编译系统。这其中包含了词法分析、语法分析、语义分析,以及代码生成,甚至是更底层的汇编和链接过程。我期待这本书能够提供详细的代码示例和解释,让我能够真正地“摸着石头过河”,在实践中学习和成长,从而获得对计算机底层运作机制更深刻、更直观的理解。

☆☆☆☆☆

这本书的书名直击人心,"自己动手构造编译系统:编译、汇编与链接",光是这几个关键词就足以点燃我内心深处那个对计算机底层原理的好奇与渴望。我一直对软件如何从人类可读的代码变成机器能够理解并执行的指令这一过程感到无比着迷。市面上关于操作系统、计算机体系结构的图书很多,但能够如此清晰地聚焦于“构造编译系统”这一核心环节的,却屈指可数。我曾经尝试过阅读一些关于编译原理的经典教材,虽然内容详实,但往往因为其学术性过强,又或是过于侧重理论推导,导致我在实际动手操作的过程中屡屡受挫,难以体会到将抽象概念转化为具体实现的乐趣。我相信,这本书的出现,定能填补我在这方面的知识空白,让我能够真正地“摸着石头过河”,亲手构建起一个属于自己的、能够工作的编译系统。这种“自己动手”的精神,正是我所追求的,它意味着将理论学习与实践操作完美结合,从而获得更深刻、更牢固的理解。我期待这本书能够带领我穿越晦涩的理论迷雾,来到代码的世界,让我亲眼见证一行行文本是如何在我的手中转化为运行的程序,一步步揭开编译、汇编、链接这些神秘面纱背后的真实运作机制。

☆☆☆☆☆

作为一名对计算机底层技术有着浓厚兴趣的开发者,我一直在寻找一本能够帮助我深入理解编译、汇编和链接过程的书籍。我深知,要成为一名优秀的程序员,不仅要会使用工具,更要理解工具背后的原理。《自己动手构造编译系统:编译、汇编与链接》这本书的书名,恰恰点出了我的需求——“自己动手”。这表明本书不仅仅是理论的堆砌,而是强调实践的指导。我非常期待这本书能够详细讲解如何从头开始构建一个编译系统,包括前端的词法分析、语法分析、语义分析,以及后端的代码生成、优化等环节。同时,我也希望能学习到如何构建一个汇编器,将汇编代码转化为机器码,以及链接器如何处理符号解析和地址重定位等关键问题。能够亲手构建这样一个复杂的系统,对我来说将是一次宝贵的学习经历,也能够极大地提升我对计算机体系结构的理解和掌握程度。我相信,这本书将是我通往更深层次编程技术的一块重要基石。

☆☆☆☆☆

我一直对程序是如何从文本变成可执行文件这个过程充满了好奇,特别是编译、汇编和链接这三个核心环节,它们就像是计算机世界里的“炼金术”。市面上关于这些主题的书籍不少,但我总觉得缺了一份“手把手”的指导,让我能够真正地参与其中,而不是仅仅作为一名读者去理解理论。《自己动手构造编译系统:编译、汇编与链接》这本书的书名,完美地契合了我对学习方式的期待。我渴望的是能够亲身参与到编译系统的构建过程中,从理解源语言的解析,到生成机器码,再到最终的链接,每一个环节我都想亲手去实现和调试。这本书所承诺的“自己动手”,正是能让我达成这一目标的最佳方式。我希望它能够提供清晰的步骤、详细的代码示例,以及对每一个技术点的深入讲解,让我能够一步步地构建起属于自己的编译系统。我相信,通过这样的实践,我将能够对计算机底层原理有更深刻、更直观的理解,并从中获得宝贵的实践经验。

☆☆☆☆☆

个人觉得一般般,基本都是节选,且对基础知识和代码的衔接也不好,看的人懵懵然

☆☆☆☆☆

这本书不OK

☆☆☆☆☆

因为我打算在jvm上实现一门动态语言,希望从这本书能看到一些值得借鉴的部分。但是这本书实现的是C的一个子集,是静态语言。并且我感兴趣的AST等也没有涉及到,同时里面有一些汇编的内容也不是我需要的。简单翻了一遍,书还不错,但不是我需要的。等我实现差不多之后,可以参考一下编译优化的部分

☆☆☆☆☆

这本书不OK

☆☆☆☆☆

这本书不OK