C编译器剖析

C编译器剖析
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2016-06
版次: 1
ISBN: 9787302426103
定价: 49.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 390页
24人买过
  • “编译原理”课程是一门理论性与实践性非常强的课程,应遵循从具体到抽象的认知规律。本书以一个开源的C编译器(UCC)为案例,在源代码分析的过程中,展开对编译原理相关知识的学习和讨论。全书共分6章: 第1章介绍文法和递归等知识点,并采用结合C语言的方式来讨论汇编代码;第2章讨论UCC编译器的词法分析、内存管理、符号表管理和类型系统等基本模块;第3章介绍UCC编译器的语法分析,采用的是手工打造分析器的技术路线;第4章介绍语义检查,通过本章的学习,有助于C程序员站在编译器的角度来深入理解C语言的语义规则;第5章分析UCC编译器的中间代码生成及优化;第6章介绍如何生成32位的x86汇编代码。本书不仅是很好的编译原理和编译器设计教材,也可作为读者深入学习C程序设计的参考用书。 第1章基础知识/1

        1.1语言、文法与递归1

        1.2一个较复杂的文法4

        1.3由文法到分析器7

        1.3.1表达式7

        1.3.2声明15

        1.3.3语句21

        1.4UCC编译器预览28

        1.4.1UCC的使用28

        1.4.2UCC驱动器31

        1.5结合C语言来学汇编35

        1.5.1汇编语言简介35

        1.5.2整数运算42

        1.5.3浮点数的算术运算48

        1.5.4浮点数之间的比较操作51

        1.5.5指针、数组和结构体53

        1.6C语言的变量名、数组名和函数名55

        1.7C语言的变参函数58

        1.8本章习题65

         第2章UCC编译器的基本模块/66

        2.1从Makefile走起66

        2.2词法分析69

        2.3UCC编译器的内存管理74

        2.4C语言的类型系统81

        2.5UCC编译器的符号表管理91

        2.6本章习题100

        第3章语法分析/101

        3.1C语言的表达式101〖1〗C编译器剖析目录[3]〖3〗3.1.1条件表达式和二元表达式101

        3.1.2一元表达式、后缀表达式和基本表达式111

        3.2C语言的语句122

        3.3C语言的外部声明131

        3.3.1声明和函数定义131

        3.3.2与声明有关的几个非终结符142

        3.3.3声明说明符和声明符147

        3.4本章习题166

        第4章语义检查/167

        4.1语义检查简介167

        4.2表达式的语义检查168

        4.2.1表达式的语义检查简介168

        4.2.2数组索引的语义检查173

        4.2.3基本表达式的语义检查179

        4.2.4函数调用的语义检查184

        4.2.5成员选择运算符的语义检查198

        4.2.6相容类型201

        4.2.7一元表达式的语义检查209

        4.2.8二元表达式、赋值表达式和条件表达式的语义检查216

        4.3语句的语义检查226

        4.4声明的语义检查231

        4.4.1类型结构的构建231

        4.4.2结构体的类型结构245

        4.4.3结构体和数组的初始化255

        4.4.4内部连接和外部连接267

        4.4.5外部声明的语义检查270

        4.5本章习题274

        第5章中间代码生成及优化/276

        5.1中间代码生成简介276

        5.2表达式的翻译283

        5.2.1布尔表达式的翻译283

        5.2.2公共子表达式293

        5.2.3通过“偏移”访问数组元素和结构体成员301

        5.2.4后缀表达式的翻译305

        5.2.5赋值表达式的翻译310

        5.2.6一元表达式及其他表达式的翻译317

        5.3语句的翻译319

        5.3.1if语句和复合语句的翻译319

        5.3.2switch语句的翻译324

        5.4UCC编译器的优化334

        5.4.1删除无用的临时变量和优化跳转目标334

        5.4.2基本块的合并339

        5.5本章习题342

        第6章汇编代码生成/344

        6.1汇编代码生成简介344

        6.2寄存器的管理351

        6.3中间代码的翻译358

        6.3.1由中间代码产生汇编指令的主要流程358

        6.3.2为算术运算产生汇编代码367

        6.3.3为跳转指令产生汇编代码371

        6.3.4为函数调用与返回产生汇编代码375

        6.3.5为类型转换产生汇编代码382

        6.3.6为取地址产生汇编指令387

        6.4本章习题390

        参考文献/391后记/3921.1软件工程的发展历程1

        1.1.1软件危机1

        1.1.2软件危机出现的原因3

        1.1.3软件工程的发展4

        1.2软件工程的概念5

        1.2.1软件工程的定义5

        1.2.2软件工程的目标6

        1.2.3软件工程的实施原则8

        1.2.4软件工程的基本原理9

        1.3软件与软件过程10

        1.3.1软件的概念11

        1.3.2软件的分类12

        1.3.3软件生命周期13

        1.3.4软件过程15

        1.4软件过程模型16

        1.4.1瀑布模型16

        1.4.2原型模型17

        1.4.3增量模型18

        1.4.4螺旋模型19

        1.4.5喷泉模型20

        1.4.6敏捷过程模型20

        1.4.74GT过程模型22

        1.4.8基于构件的开发模型23

        1.4.9Rational统一建模过程24

        1.4.10微软解决框架过程模型25

        1.5软件开发方法26

        1.5.1结构化开发方法27

        1.5.2面向对象开发方法271.6案例描述28

        1.6.1简历信息自动获取和查询系统28

        1.6.2试卷自动生成系统29

        1.7本章小结30

        习题31

        第2章软件需求工程/33

        2.1软件需求的基本概念33

        2.1.1需求分析的任务33

        2.1.2需求分析的原则34

        2.1.3需求分析的内容35

        2.2需求工程的过程36

        2.2.1需求工程中的参与人员36

        2.2.2可行性研究37

        2.2.3需求工程过程中的活动39

        2.2.4需求工程的管理40

        2.3需求获取技术41

        2.4结构化需求分析和建模43

        2.4.1结构化需求分析概述44

        2.4.2面向数据的数据建模44

        2.4.3面向数据流的功能建模46

        2.4.4面向状态转换的行为建模50

        2.4.5数据字典51

        2.4.6加工逻辑53

        2.5案例——“简历自动获取和查询系统”的需求建模54

        2.5.1数据建模——ER图描述54

        2.5.2功能建模——数据流图55

        2.5.3行为建模——状态转换图56

        2.5.4数据字典57

        2.5.5加工逻辑——PDL语言的描述57

        2.6需求评审58

        2.6.1软件需求规格说明文档58

        2.6.2需求评审标准及需求验证61

        2.6.3需求变更管理63

        2.7本章小结64

        习题64

        第3章软件设计基础/66

        3.1软件设计概述66

        3.1.1软件设计与软件需求66

        3.1.2软件设计的任务67

        3.1.3软件设计的原则69

        3.2软件体系结构设计70

        3.2.1体系结构设计概述70

        3.2.2以数据为中心的数据仓库模型70

        3.2.3客户端/服务器模式的分布式结构71

        3.2.4层次模型73

        3.2.5管道与过滤器模型74

        3.3模块化设计75

        3.3.1软件模块化与分解75

        3.3.2抽象76

        3.3.3信息隐藏76

        3.3.4模块独立性77

        3.3.5启发式规则79

        3.4界面设计82

        3.4.1界面设计的任务82

        3.4.2界面设计的原则83

        3.4.3界面设计的特性84

        3.4.4MVC模型84

        3.5软件设计评审85

        3.5.1软件设计规格说明文档85

        3.5.2软件设计评审标准89

        3.5.3软件设计验证90

        3.6本章小结91

        习题92

        第4章结构化设计方法/93

        4.1结构化设计方法概述93

        4.2面向数据流的设计方法94

        4.2.1层次图和结构图94

        4.2.2变换分析法96

        4.2.3事务分析法100

        4.2.4混合分析法101

        4.3面向数据的设计方法102

        4.3.1Jackson图102

        4.3.2Jackson系统开发方法103

        4.4案例——“简历自动获取和查询系统”的数据流设计方法106

        4.4.1用变换分析法进行设计106

        4.4.2用事务分析法进行设计107

        4.4.3两种方法的比较108

        4.5结构化详细设计的工具109

        4.5.1程序流程图109

        4.5.2盒图(NS图)110

        4.5.3问题分析图(PAD图)111

        4.5.4判定树113

        4.5.5判定表113

        4.5.6详细设计工具的比较114

        4.6本章小结115

        习题116

        第5章软件实现/118

        5.1程序设计语言118

        5.1.1程序设计语言的分类118

        5.1.2程序设计语言的特性119

        5.1.3选择程序设计语言120

        5.2程序设计风格122

        5.2.1程序编排和组织的准则122

        5.2.2程序设计的效率126

        5.3代码复用127

        5.4代码评审129

        5.5本章小结132

        习题133

        第6章软件测试/136

        6.1软件测试基础136

        6.1.1软件测试概念136

        6.1.2软件测试过程模型137

        6.1.3软件测试原则139

        6.1.4软件测试在软件开发各阶段的工作流程141

        6.1.5软件测试信息流143

        6.1.6软件测试技术分类143

        6.2白盒测试145

        6.2.1逻辑覆盖145

        6.2.2循环测试148

        6.2.3路径测试149

        6.3黑盒测试152

        6.3.1等价类划分152

        6.3.2边界值分析154

        6.3.3错误推测法154

        6.3.4因果图法155

        6.4白盒测试和黑盒测试的比较157

        6.5软件测试策略158

        6.5.1单元测试158

        6.5.2集成测试161

        6.5.3确认测试164

        6.5.4系统测试165

        6.6调试167

        6.6.1软件调试过程167

        6.6.2软件调试方法168

        6.7软件测试报告169

        6.7.1软件测试说明169

        6.7.2软件测试报告170

        6.8本章小结171

        习题172

        第7章UML统一建模语言/174

        7.1UML的发展174

        7.1.1UML的产生174

        7.1.2UML的构成175

        7.1.3UML的特点176

        7.2面向对象的基本概念176

        7.3UML视图182

        7.4UML的图和模型元素183

        7.4.1用例图183

        7.4.2类图185

        7.4.3包图186

        7.4.4状态图187

        7.4.5活动图187

        7.4.6顺序图189

        7.4.7协作图190

        7.4.8构件图191

        7.4.9配置图192

        7.5UML的关系192

        7.5.1关联关系193

        7.5.2泛化关系196

        7.5.3依赖关系199

        7.5.4实现关系200

        7.6UML的通用机制200

        7.6.1修饰201

        7.6.2注释201

        7.6.3规格说明201

        7.6.4扩展机制202

        7.7基于UML的软件过程203

        7.8本章小结205

        习题206

        第8章面向对象分析/207

        8.1面向对象分析概述207

        8.1.1传统软件过程中的不足207

        8.1.2面向对象的特点208

        8.1.3面向对象分析的基本过程209

        8.1.4面向对象分析的3类模型209

        8.1.5静态模型的5个层次210

        8.2建立功能模型(用例模型)211

        8.2.1识别参与者212

        8.2.2识别用例212

        8.2.3识别用例间关系214

        8.2.4用例描述文档215

        8.3建立静态模型(对象模型)216

        8.3.1识别类与对象216

        8.3.2划分主题218

        8.3.3确定结构219

        8.3.4确定属性220

        8.3.5确定服务221

        8.3.6类图描述文档221

        8.3.7包图描述文档222

        8.4建立动态模型223

        8.4.1建立顺序图及其描述文档223

        8.4.2建立状态图及其描述文档225

        8.4.3建立协作图及其描述文档226

        8.4.4建立活动图及其描述文档227

        8.5本章小结229

        习题229

        第9章面向对象设计/231

        9.1面向对象设计概述231

        9.1.1面向对象分析与设计的关系231

        9.1.2面向对象设计原则232

        9.2精化类及类间关系233

        9.2.1设计类的属性233

        9.2.2设计类的方法234

        9.2.3设计类间泛化关系235

        9.2.4设计关联类236

        9.3数据设计237

        9.3.1基于关系数据库的数据设计237

        9.3.2基于其他方式的数据设计239

        9.4人机交互设计240

        9.5建立实现模型241

        9.5.1构件图及其描述文档241

        9.5.2配置图及其描述文档243

        9.6设计模式简介244

        9.6.1概述244

        9.6.2Singleton模式245

        9.6.3Abstract Factory模式247

        9.6.4Mediator模式249

        9.6.5Adapter模式251

        9.6.6Iterator模式253

        9.6.7State模式256

        9.7面向对象的测试258

        9.7.1面向对象测试概述258

        9.7.2面向对象的单元测试259

        9.8本章小结261

        习题262

        第10章软件维护/265

        10.1软件维护概述265

        10.1.1软件维护的任务265

        10.1.2软件维护的特点266

        10.1.3软件维护的分类266

        10.2软件维护过程267

        10.2.1软件维护方式268

        10.2.2软件维护管理的基本内容269

        10.2.3维护中存在的问题273

        10.2.4维护活动记录274

        10.3软件的可维护性275

        10.3.1可维护性因素275

        10.3.2提高软件的可维护性276

        10.4逆向工程278

        10.5本章小结280

        习题281

        第11章软件项目管理/282

        11.1软件项目管理概述282

        11.1.1软件项目管理的特点和内容282

        11.1.2软件项目管理目标283

        11.1.3软件项目管理的4P观点284

        11.2软件项目规模度量285

        11.2.1代码行技术286

        11.2.2功能点计算287

        11.2.3代码行与功能点间的转换290

        11.3软件项目估算291

        11.3.1代码行和功能点的其他估算模型291

        11.3.2专家估算模型291

        11.3.3Putnam模型292

        11.3.4COCOMO模型292

        11.3.5项目估算模型的小结295

        11.4项目进度管理295

        11.4.1项目进度控制295

        11.4.2甘特图296

        11.4.3工程网络图297

        11.5项目风险管理298

        11.5.1软件风险概念299

        11.5.2风险管理过程299

        11.6项目质量管理302

        11.6.1软件质量因素303

        11.6.2软件质量保证活动307

        11.6.3软件质量保证计划308

        11.7软件配置管理309

        11.7.1软件配置项310

        11.7.2配置管理过程310

        11.7.3软件配置管理计划313

        11.8项目人员组织管理315

        11.8.1团队组织315

        11.8.2团队组织方式315

        11.9软件能力成熟度模型317

        11.9.1基本概念317

        11.9.2软件能力成熟度模型等级319

        11.9.3关键过程域319

        11.10本章小结320

        习题321

        参考文献/3231.6案例描述28

        1.6.1简历信息自动获取和查询系统28

        1.6.2试卷自动生成系统29

        1.7本章小结30

        习题31

        第2章软件需求工程/33

        2.1软件需求的基本概念33

        2.1.1需求分析的任务33

        2.1.2需求分析的原则34

        2.1.3需求分析的内容35

        2.2需求工程的过程36

        2.2.1需求工程中的参与人员36

        2.2.2可行性研究37

        2.2.3需求工程过程中的活动39

        2.2.4需求工程的管理40

        2.3需求获取技术41

        2.4结构化需求分析和建模43

        2.4.1结构化需求分析概述44

        2.4.2面向数据的数据建模44

        2.4.3面向数据流的功能建模46

        2.4.4面向状态转换的行为建模50

        2.4.5数据字典51

        2.4.6加工逻辑53

        2.5案例——“简历自动获取和查询系统”的需求建模54

        2.5.1数据建模——ER图描述54

        2.5.2功能建模——数据流图55

        2.5.3行为建模——状态转换图56

        2.5.4数据字典57

        2.5.5加工逻辑——PDL语言的描述57

        2.6需求评审58

        2.6.1软件需求规格说明文档58

        2.6.2需求评审标准及需求验证61

        2.6.3需求变更管理63

        2.7本章小结64

        习题64第3章软件设计基础/66

        3.1软件设计概述66

        3.1.1软件设计与软件需求66

        3.1.2软件设计的任务67

        3.1.3软件设计的原则69

        3.2软件体系结构设计70

        3.2.1体系结构设计概述70

        3.2.2以数据为中心的数据仓库模型70

        3.2.3客户端/服务器模式的分布式结构71

        3.2.4层次模型73

        3.2.5管道与过滤器模型74

        3.3模块化设计75

        3.3.1软件模块化与分解75

        3.3.2抽象76

        3.3.3信息隐藏76

        3.3.4模块独立性77

        3.3.5启发式规则79

        3.4界面设计82

        3.4.1界面设计的任务82

        3.4.2界面设计的原则83

        3.4.3界面设计的特性84

        3.4.4MVC模型84

        3.5软件设计评审85

        3.5.1软件设计规格说明文档85

        3.5.2软件设计评审标准90

        3.5.3软件设计验证91

        3.6本章小结92

        习题93

        第4章结构化设计方法/94

        4.1结构化设计方法概述94

        4.2面向数据流的设计方法95

        4.2.1层次图和结构图95

        4.2.2变换分析法97

        4.2.3事务分析法101

        4.2.4混合分析法102

        4.3面向数据的设计方法103

        4.3.1Jackson图103

        4.3.2Jackson系统开发方法104

        4.4案例——“简历自动获取和查询系统”的数据流设计方法107

        4.4.1用变换分析法进行设计107

        4.4.2用事务分析法进行设计108

        4.4.3两种方法的比较109

        4.5结构化详细设计的工具110

        4.5.1程序流程图110

        4.5.2盒图(NS图)111

        4.5.3问题分析图(PAD图)112

        4.5.4判定树114

        4.5.5判定表114

        4.5.6详细设计工具的比较115

        4.6本章小结116

        习题117

        第5章软件实现/119

        5.1程序设计语言119

        5.1.1程序设计语言的分类119

        5.1.2程序设计语言的特性120

        5.1.3选择程序设计语言121

        5.2程序设计风格123

        5.2.1程序编排和组织的准则123

        5.2.2程序设计的效率127

        5.3代码复用128

        5.4代码评审130

        5.5本章小结133

        习题134

        第6章软件测试/137

        6.1软件测试基础137

        6.1.1软件测试概念137

        6.1.2软件测试过程模型138

        6.1.3软件测试原则140

        6.1.4软件测试在软件开发各阶段的工作流程142

        6.1.5软件测试信息流144

        6.1.6软件测试技术分类144

        6.2白盒测试146

        6.2.1逻辑覆盖146

        6.2.2循环测试149

        6.2.3路径测试150

        6.3黑盒测试153

        6.3.1等价类划分153

        6.3.2边界值分析155

        6.3.3错误推测法155

        6.3.4因果图法156

        6.4白盒测试和黑盒测试的比较158

        6.5软件测设策略159

        6.5.1单元测试159

        6.5.2集成测试162

        6.5.3确认测试165

        6.5.4系统测试166

        6.6调试168

        6.6.1软件调试过程168

        6.6.2软件调试方法169

        6.7软件测试报告170

        6.7.1软件测试说明170

        6.7.2软件测试报告171

        6.8本章小结172

        习题173

        第7章UML统一建模语言/175

        7.1UML的发展175

        7.1.1UML的产生175

        7.1.2UML的构成176

        7.1.3UML的特点177

        7.2面向对象的基本概念177

        7.3UML视图183

        7.4UML的图和模型元素184

        7.4.1用例图184

        7.4.2类图186

        7.4.3包图187

        7.4.4状态图188

        7.4.5活动图188

        7.4.6顺序图190

        7.4.7协作图191

        7.4.8构件图192

        7.4.9配置图193

        7.5UML的关系193

        7.5.1关联关系194

        7.5.2泛化关系197

        7.5.3依赖关系200

        7.5.4实现关系201

        7.6UML的通用机制201

        7.6.1修饰202

        7.6.2注释202

        7.6.3规格说明202

        7.6.4扩展机制203

        7.7基于UML的软件过程204

        7.8本章小结206

        习题207

        第8章面向对象分析/208

        8.1面向对象分析概述208

        8.1.1传统软件过程中的不足208

        8.1.2面向对象的特点209

        8.1.3面向对象分析的基本过程210

        8.1.4面向对象分析的3类模型210

        8.1.5静态模型的5个层次211

        8.2建立功能模型(用例模型)212

        8.2.1识别参与者213

        8.2.2识别用例213

        8.2.3识别用例间关系215

        8.2.4用例描述文档216

        8.3建立静态模型(对象模型)217

        8.3.1识别类与对象217

        8.3.2划分主题219

        8.3.3确定结构220

        8.3.4确定属性221

        8.3.5确定服务222

        8.3.6类图描述文档222

        8.3.7包图描述文档223

        8.4建立动态模型224

        8.4.1建立顺序图及其描述文档224

        8.4.2建立状态图及其描述文档226

        8.4.3建立协作图及其描述文档227

        8.4.4建立活动图及其描述文档228

        8.5本章小结230

        习题230

        第9章面向对象设计/232

        9.1面向对象设计概述232

        9.1.1面向对象分析与设计的关系232

        9.1.2面向对象设计原则233

        9.2精化类及类间关系234

        9.2.1设计类的属性234

        9.2.2设计类的方法235

        9.2.3设计类间泛化关系236

        9.2.4设计关联类237

        9.3数据设计238

        9.3.1基于关系数据库的数据设计238

        9.3.2基于其他方式的数据设计240

        9.4人机交互设计241

        9.5建立实现模型242

        9.5.1构件图及其描述文档242

        9.5.2配置图及其描述文档244

        9.6设计模式简介245

        9.6.1概述245

        9.6.2Singleton模式246

        9.6.3Abstract Factory模式248

        9.6.4Mediator模式250

        9.6.5Adapter模式252

        9.6.6Iterator模式254

        9.6.7State模式257

        9.7面向对象的测试259

        9.7.1面向对象测试概述259

        9.7.2面向对象的单元测试260

        9.8本章小结262

        习题263

        第10章软件维护/266

        10.1软件维护概述266

        10.1.1软件维护的任务266

        10.1.2软件维护的特点267

        10.1.3软件维护的分类267

        10.2软件维护过程268

        10.2.1软件维护方式269

        10.2.2软件维护管理的基本内容270

        10.2.3维护中存在的问题274

        10.2.4维护活动记录275

        10.3软件的可维护性276

        10.3.1可维护性因素276

        10.3.2提高软件的可维护性277

        10.4逆向工程279

        10.5本章小结281

        习题282

        第11章软件项目管理/283

        11.1软件项目管理概述283

        11.1.1软件项目管理的特点和内容283

        11.1.2软件项目管理目标284

        11.1.3软件项目管理的4P观点285

        11.2软件项目规模度量286

        11.2.1代码行技术287

        11.2.2功能点计算288

        11.2.3代码行与功能点间的转换291

        11.3软件项目估算292

        11.3.1代码行和功能点的其他估算模型292

        11.3.2专家估算模型292

        11.3.3Putnam模型293

        11.3.4COCOMO模型293

        11.3.5项目估算模型的小结296

        11.4项目进度管理296

        11.4.1项目进度控制296

        11.4.2甘特图297

        11.4.3工程网络图298

        11.5项目风险管理299

        11.5.1软件风险概念300

        11.5.2风险管理过程300

        11.6项目质量管理303

        11.6.1软件质量因素304

        11.6.2软件质量保证活动308

        11.6.3软件质量保证计划309

        11.7软件配置管理310

        11.7.1软件配置项311

        11.7.2配置管理过程311

        11.7.3软件配置管理计划314

        11.8项目人员组织管理316

        11.8.1团队组织316

        11.8.2团队组织方式316

        11.9软件能力成熟度模型318

        11.9.1基本概念318

        11.9.2软件能力成熟度模型等级320

        11.9.3关键过程域320

        11.10本章小结321

        习题322

        参考文献/324
  • 内容简介:
    “编译原理”课程是一门理论性与实践性非常强的课程,应遵循从具体到抽象的认知规律。本书以一个开源的C编译器(UCC)为案例,在源代码分析的过程中,展开对编译原理相关知识的学习和讨论。全书共分6章: 第1章介绍文法和递归等知识点,并采用结合C语言的方式来讨论汇编代码;第2章讨论UCC编译器的词法分析、内存管理、符号表管理和类型系统等基本模块;第3章介绍UCC编译器的语法分析,采用的是手工打造分析器的技术路线;第4章介绍语义检查,通过本章的学习,有助于C程序员站在编译器的角度来深入理解C语言的语义规则;第5章分析UCC编译器的中间代码生成及优化;第6章介绍如何生成32位的x86汇编代码。本书不仅是很好的编译原理和编译器设计教材,也可作为读者深入学习C程序设计的参考用书。
  • 目录:
    第1章基础知识/1

        1.1语言、文法与递归1

        1.2一个较复杂的文法4

        1.3由文法到分析器7

        1.3.1表达式7

        1.3.2声明15

        1.3.3语句21

        1.4UCC编译器预览28

        1.4.1UCC的使用28

        1.4.2UCC驱动器31

        1.5结合C语言来学汇编35

        1.5.1汇编语言简介35

        1.5.2整数运算42

        1.5.3浮点数的算术运算48

        1.5.4浮点数之间的比较操作51

        1.5.5指针、数组和结构体53

        1.6C语言的变量名、数组名和函数名55

        1.7C语言的变参函数58

        1.8本章习题65

         第2章UCC编译器的基本模块/66

        2.1从Makefile走起66

        2.2词法分析69

        2.3UCC编译器的内存管理74

        2.4C语言的类型系统81

        2.5UCC编译器的符号表管理91

        2.6本章习题100

        第3章语法分析/101

        3.1C语言的表达式101〖1〗C编译器剖析目录[3]〖3〗3.1.1条件表达式和二元表达式101

        3.1.2一元表达式、后缀表达式和基本表达式111

        3.2C语言的语句122

        3.3C语言的外部声明131

        3.3.1声明和函数定义131

        3.3.2与声明有关的几个非终结符142

        3.3.3声明说明符和声明符147

        3.4本章习题166

        第4章语义检查/167

        4.1语义检查简介167

        4.2表达式的语义检查168

        4.2.1表达式的语义检查简介168

        4.2.2数组索引的语义检查173

        4.2.3基本表达式的语义检查179

        4.2.4函数调用的语义检查184

        4.2.5成员选择运算符的语义检查198

        4.2.6相容类型201

        4.2.7一元表达式的语义检查209

        4.2.8二元表达式、赋值表达式和条件表达式的语义检查216

        4.3语句的语义检查226

        4.4声明的语义检查231

        4.4.1类型结构的构建231

        4.4.2结构体的类型结构245

        4.4.3结构体和数组的初始化255

        4.4.4内部连接和外部连接267

        4.4.5外部声明的语义检查270

        4.5本章习题274

        第5章中间代码生成及优化/276

        5.1中间代码生成简介276

        5.2表达式的翻译283

        5.2.1布尔表达式的翻译283

        5.2.2公共子表达式293

        5.2.3通过“偏移”访问数组元素和结构体成员301

        5.2.4后缀表达式的翻译305

        5.2.5赋值表达式的翻译310

        5.2.6一元表达式及其他表达式的翻译317

        5.3语句的翻译319

        5.3.1if语句和复合语句的翻译319

        5.3.2switch语句的翻译324

        5.4UCC编译器的优化334

        5.4.1删除无用的临时变量和优化跳转目标334

        5.4.2基本块的合并339

        5.5本章习题342

        第6章汇编代码生成/344

        6.1汇编代码生成简介344

        6.2寄存器的管理351

        6.3中间代码的翻译358

        6.3.1由中间代码产生汇编指令的主要流程358

        6.3.2为算术运算产生汇编代码367

        6.3.3为跳转指令产生汇编代码371

        6.3.4为函数调用与返回产生汇编代码375

        6.3.5为类型转换产生汇编代码382

        6.3.6为取地址产生汇编指令387

        6.4本章习题390

        参考文献/391后记/3921.1软件工程的发展历程1

        1.1.1软件危机1

        1.1.2软件危机出现的原因3

        1.1.3软件工程的发展4

        1.2软件工程的概念5

        1.2.1软件工程的定义5

        1.2.2软件工程的目标6

        1.2.3软件工程的实施原则8

        1.2.4软件工程的基本原理9

        1.3软件与软件过程10

        1.3.1软件的概念11

        1.3.2软件的分类12

        1.3.3软件生命周期13

        1.3.4软件过程15

        1.4软件过程模型16

        1.4.1瀑布模型16

        1.4.2原型模型17

        1.4.3增量模型18

        1.4.4螺旋模型19

        1.4.5喷泉模型20

        1.4.6敏捷过程模型20

        1.4.74GT过程模型22

        1.4.8基于构件的开发模型23

        1.4.9Rational统一建模过程24

        1.4.10微软解决框架过程模型25

        1.5软件开发方法26

        1.5.1结构化开发方法27

        1.5.2面向对象开发方法271.6案例描述28

        1.6.1简历信息自动获取和查询系统28

        1.6.2试卷自动生成系统29

        1.7本章小结30

        习题31

        第2章软件需求工程/33

        2.1软件需求的基本概念33

        2.1.1需求分析的任务33

        2.1.2需求分析的原则34

        2.1.3需求分析的内容35

        2.2需求工程的过程36

        2.2.1需求工程中的参与人员36

        2.2.2可行性研究37

        2.2.3需求工程过程中的活动39

        2.2.4需求工程的管理40

        2.3需求获取技术41

        2.4结构化需求分析和建模43

        2.4.1结构化需求分析概述44

        2.4.2面向数据的数据建模44

        2.4.3面向数据流的功能建模46

        2.4.4面向状态转换的行为建模50

        2.4.5数据字典51

        2.4.6加工逻辑53

        2.5案例——“简历自动获取和查询系统”的需求建模54

        2.5.1数据建模——ER图描述54

        2.5.2功能建模——数据流图55

        2.5.3行为建模——状态转换图56

        2.5.4数据字典57

        2.5.5加工逻辑——PDL语言的描述57

        2.6需求评审58

        2.6.1软件需求规格说明文档58

        2.6.2需求评审标准及需求验证61

        2.6.3需求变更管理63

        2.7本章小结64

        习题64

        第3章软件设计基础/66

        3.1软件设计概述66

        3.1.1软件设计与软件需求66

        3.1.2软件设计的任务67

        3.1.3软件设计的原则69

        3.2软件体系结构设计70

        3.2.1体系结构设计概述70

        3.2.2以数据为中心的数据仓库模型70

        3.2.3客户端/服务器模式的分布式结构71

        3.2.4层次模型73

        3.2.5管道与过滤器模型74

        3.3模块化设计75

        3.3.1软件模块化与分解75

        3.3.2抽象76

        3.3.3信息隐藏76

        3.3.4模块独立性77

        3.3.5启发式规则79

        3.4界面设计82

        3.4.1界面设计的任务82

        3.4.2界面设计的原则83

        3.4.3界面设计的特性84

        3.4.4MVC模型84

        3.5软件设计评审85

        3.5.1软件设计规格说明文档85

        3.5.2软件设计评审标准89

        3.5.3软件设计验证90

        3.6本章小结91

        习题92

        第4章结构化设计方法/93

        4.1结构化设计方法概述93

        4.2面向数据流的设计方法94

        4.2.1层次图和结构图94

        4.2.2变换分析法96

        4.2.3事务分析法100

        4.2.4混合分析法101

        4.3面向数据的设计方法102

        4.3.1Jackson图102

        4.3.2Jackson系统开发方法103

        4.4案例——“简历自动获取和查询系统”的数据流设计方法106

        4.4.1用变换分析法进行设计106

        4.4.2用事务分析法进行设计107

        4.4.3两种方法的比较108

        4.5结构化详细设计的工具109

        4.5.1程序流程图109

        4.5.2盒图(NS图)110

        4.5.3问题分析图(PAD图)111

        4.5.4判定树113

        4.5.5判定表113

        4.5.6详细设计工具的比较114

        4.6本章小结115

        习题116

        第5章软件实现/118

        5.1程序设计语言118

        5.1.1程序设计语言的分类118

        5.1.2程序设计语言的特性119

        5.1.3选择程序设计语言120

        5.2程序设计风格122

        5.2.1程序编排和组织的准则122

        5.2.2程序设计的效率126

        5.3代码复用127

        5.4代码评审129

        5.5本章小结132

        习题133

        第6章软件测试/136

        6.1软件测试基础136

        6.1.1软件测试概念136

        6.1.2软件测试过程模型137

        6.1.3软件测试原则139

        6.1.4软件测试在软件开发各阶段的工作流程141

        6.1.5软件测试信息流143

        6.1.6软件测试技术分类143

        6.2白盒测试145

        6.2.1逻辑覆盖145

        6.2.2循环测试148

        6.2.3路径测试149

        6.3黑盒测试152

        6.3.1等价类划分152

        6.3.2边界值分析154

        6.3.3错误推测法154

        6.3.4因果图法155

        6.4白盒测试和黑盒测试的比较157

        6.5软件测试策略158

        6.5.1单元测试158

        6.5.2集成测试161

        6.5.3确认测试164

        6.5.4系统测试165

        6.6调试167

        6.6.1软件调试过程167

        6.6.2软件调试方法168

        6.7软件测试报告169

        6.7.1软件测试说明169

        6.7.2软件测试报告170

        6.8本章小结171

        习题172

        第7章UML统一建模语言/174

        7.1UML的发展174

        7.1.1UML的产生174

        7.1.2UML的构成175

        7.1.3UML的特点176

        7.2面向对象的基本概念176

        7.3UML视图182

        7.4UML的图和模型元素183

        7.4.1用例图183

        7.4.2类图185

        7.4.3包图186

        7.4.4状态图187

        7.4.5活动图187

        7.4.6顺序图189

        7.4.7协作图190

        7.4.8构件图191

        7.4.9配置图192

        7.5UML的关系192

        7.5.1关联关系193

        7.5.2泛化关系196

        7.5.3依赖关系199

        7.5.4实现关系200

        7.6UML的通用机制200

        7.6.1修饰201

        7.6.2注释201

        7.6.3规格说明201

        7.6.4扩展机制202

        7.7基于UML的软件过程203

        7.8本章小结205

        习题206

        第8章面向对象分析/207

        8.1面向对象分析概述207

        8.1.1传统软件过程中的不足207

        8.1.2面向对象的特点208

        8.1.3面向对象分析的基本过程209

        8.1.4面向对象分析的3类模型209

        8.1.5静态模型的5个层次210

        8.2建立功能模型(用例模型)211

        8.2.1识别参与者212

        8.2.2识别用例212

        8.2.3识别用例间关系214

        8.2.4用例描述文档215

        8.3建立静态模型(对象模型)216

        8.3.1识别类与对象216

        8.3.2划分主题218

        8.3.3确定结构219

        8.3.4确定属性220

        8.3.5确定服务221

        8.3.6类图描述文档221

        8.3.7包图描述文档222

        8.4建立动态模型223

        8.4.1建立顺序图及其描述文档223

        8.4.2建立状态图及其描述文档225

        8.4.3建立协作图及其描述文档226

        8.4.4建立活动图及其描述文档227

        8.5本章小结229

        习题229

        第9章面向对象设计/231

        9.1面向对象设计概述231

        9.1.1面向对象分析与设计的关系231

        9.1.2面向对象设计原则232

        9.2精化类及类间关系233

        9.2.1设计类的属性233

        9.2.2设计类的方法234

        9.2.3设计类间泛化关系235

        9.2.4设计关联类236

        9.3数据设计237

        9.3.1基于关系数据库的数据设计237

        9.3.2基于其他方式的数据设计239

        9.4人机交互设计240

        9.5建立实现模型241

        9.5.1构件图及其描述文档241

        9.5.2配置图及其描述文档243

        9.6设计模式简介244

        9.6.1概述244

        9.6.2Singleton模式245

        9.6.3Abstract Factory模式247

        9.6.4Mediator模式249

        9.6.5Adapter模式251

        9.6.6Iterator模式253

        9.6.7State模式256

        9.7面向对象的测试258

        9.7.1面向对象测试概述258

        9.7.2面向对象的单元测试259

        9.8本章小结261

        习题262

        第10章软件维护/265

        10.1软件维护概述265

        10.1.1软件维护的任务265

        10.1.2软件维护的特点266

        10.1.3软件维护的分类266

        10.2软件维护过程267

        10.2.1软件维护方式268

        10.2.2软件维护管理的基本内容269

        10.2.3维护中存在的问题273

        10.2.4维护活动记录274

        10.3软件的可维护性275

        10.3.1可维护性因素275

        10.3.2提高软件的可维护性276

        10.4逆向工程278

        10.5本章小结280

        习题281

        第11章软件项目管理/282

        11.1软件项目管理概述282

        11.1.1软件项目管理的特点和内容282

        11.1.2软件项目管理目标283

        11.1.3软件项目管理的4P观点284

        11.2软件项目规模度量285

        11.2.1代码行技术286

        11.2.2功能点计算287

        11.2.3代码行与功能点间的转换290

        11.3软件项目估算291

        11.3.1代码行和功能点的其他估算模型291

        11.3.2专家估算模型291

        11.3.3Putnam模型292

        11.3.4COCOMO模型292

        11.3.5项目估算模型的小结295

        11.4项目进度管理295

        11.4.1项目进度控制295

        11.4.2甘特图296

        11.4.3工程网络图297

        11.5项目风险管理298

        11.5.1软件风险概念299

        11.5.2风险管理过程299

        11.6项目质量管理302

        11.6.1软件质量因素303

        11.6.2软件质量保证活动307

        11.6.3软件质量保证计划308

        11.7软件配置管理309

        11.7.1软件配置项310

        11.7.2配置管理过程310

        11.7.3软件配置管理计划313

        11.8项目人员组织管理315

        11.8.1团队组织315

        11.8.2团队组织方式315

        11.9软件能力成熟度模型317

        11.9.1基本概念317

        11.9.2软件能力成熟度模型等级319

        11.9.3关键过程域319

        11.10本章小结320

        习题321

        参考文献/3231.6案例描述28

        1.6.1简历信息自动获取和查询系统28

        1.6.2试卷自动生成系统29

        1.7本章小结30

        习题31

        第2章软件需求工程/33

        2.1软件需求的基本概念33

        2.1.1需求分析的任务33

        2.1.2需求分析的原则34

        2.1.3需求分析的内容35

        2.2需求工程的过程36

        2.2.1需求工程中的参与人员36

        2.2.2可行性研究37

        2.2.3需求工程过程中的活动39

        2.2.4需求工程的管理40

        2.3需求获取技术41

        2.4结构化需求分析和建模43

        2.4.1结构化需求分析概述44

        2.4.2面向数据的数据建模44

        2.4.3面向数据流的功能建模46

        2.4.4面向状态转换的行为建模50

        2.4.5数据字典51

        2.4.6加工逻辑53

        2.5案例——“简历自动获取和查询系统”的需求建模54

        2.5.1数据建模——ER图描述54

        2.5.2功能建模——数据流图55

        2.5.3行为建模——状态转换图56

        2.5.4数据字典57

        2.5.5加工逻辑——PDL语言的描述57

        2.6需求评审58

        2.6.1软件需求规格说明文档58

        2.6.2需求评审标准及需求验证61

        2.6.3需求变更管理63

        2.7本章小结64

        习题64第3章软件设计基础/66

        3.1软件设计概述66

        3.1.1软件设计与软件需求66

        3.1.2软件设计的任务67

        3.1.3软件设计的原则69

        3.2软件体系结构设计70

        3.2.1体系结构设计概述70

        3.2.2以数据为中心的数据仓库模型70

        3.2.3客户端/服务器模式的分布式结构71

        3.2.4层次模型73

        3.2.5管道与过滤器模型74

        3.3模块化设计75

        3.3.1软件模块化与分解75

        3.3.2抽象76

        3.3.3信息隐藏76

        3.3.4模块独立性77

        3.3.5启发式规则79

        3.4界面设计82

        3.4.1界面设计的任务82

        3.4.2界面设计的原则83

        3.4.3界面设计的特性84

        3.4.4MVC模型84

        3.5软件设计评审85

        3.5.1软件设计规格说明文档85

        3.5.2软件设计评审标准90

        3.5.3软件设计验证91

        3.6本章小结92

        习题93

        第4章结构化设计方法/94

        4.1结构化设计方法概述94

        4.2面向数据流的设计方法95

        4.2.1层次图和结构图95

        4.2.2变换分析法97

        4.2.3事务分析法101

        4.2.4混合分析法102

        4.3面向数据的设计方法103

        4.3.1Jackson图103

        4.3.2Jackson系统开发方法104

        4.4案例——“简历自动获取和查询系统”的数据流设计方法107

        4.4.1用变换分析法进行设计107

        4.4.2用事务分析法进行设计108

        4.4.3两种方法的比较109

        4.5结构化详细设计的工具110

        4.5.1程序流程图110

        4.5.2盒图(NS图)111

        4.5.3问题分析图(PAD图)112

        4.5.4判定树114

        4.5.5判定表114

        4.5.6详细设计工具的比较115

        4.6本章小结116

        习题117

        第5章软件实现/119

        5.1程序设计语言119

        5.1.1程序设计语言的分类119

        5.1.2程序设计语言的特性120

        5.1.3选择程序设计语言121

        5.2程序设计风格123

        5.2.1程序编排和组织的准则123

        5.2.2程序设计的效率127

        5.3代码复用128

        5.4代码评审130

        5.5本章小结133

        习题134

        第6章软件测试/137

        6.1软件测试基础137

        6.1.1软件测试概念137

        6.1.2软件测试过程模型138

        6.1.3软件测试原则140

        6.1.4软件测试在软件开发各阶段的工作流程142

        6.1.5软件测试信息流144

        6.1.6软件测试技术分类144

        6.2白盒测试146

        6.2.1逻辑覆盖146

        6.2.2循环测试149

        6.2.3路径测试150

        6.3黑盒测试153

        6.3.1等价类划分153

        6.3.2边界值分析155

        6.3.3错误推测法155

        6.3.4因果图法156

        6.4白盒测试和黑盒测试的比较158

        6.5软件测设策略159

        6.5.1单元测试159

        6.5.2集成测试162

        6.5.3确认测试165

        6.5.4系统测试166

        6.6调试168

        6.6.1软件调试过程168

        6.6.2软件调试方法169

        6.7软件测试报告170

        6.7.1软件测试说明170

        6.7.2软件测试报告171

        6.8本章小结172

        习题173

        第7章UML统一建模语言/175

        7.1UML的发展175

        7.1.1UML的产生175

        7.1.2UML的构成176

        7.1.3UML的特点177

        7.2面向对象的基本概念177

        7.3UML视图183

        7.4UML的图和模型元素184

        7.4.1用例图184

        7.4.2类图186

        7.4.3包图187

        7.4.4状态图188

        7.4.5活动图188

        7.4.6顺序图190

        7.4.7协作图191

        7.4.8构件图192

        7.4.9配置图193

        7.5UML的关系193

        7.5.1关联关系194

        7.5.2泛化关系197

        7.5.3依赖关系200

        7.5.4实现关系201

        7.6UML的通用机制201

        7.6.1修饰202

        7.6.2注释202

        7.6.3规格说明202

        7.6.4扩展机制203

        7.7基于UML的软件过程204

        7.8本章小结206

        习题207

        第8章面向对象分析/208

        8.1面向对象分析概述208

        8.1.1传统软件过程中的不足208

        8.1.2面向对象的特点209

        8.1.3面向对象分析的基本过程210

        8.1.4面向对象分析的3类模型210

        8.1.5静态模型的5个层次211

        8.2建立功能模型(用例模型)212

        8.2.1识别参与者213

        8.2.2识别用例213

        8.2.3识别用例间关系215

        8.2.4用例描述文档216

        8.3建立静态模型(对象模型)217

        8.3.1识别类与对象217

        8.3.2划分主题219

        8.3.3确定结构220

        8.3.4确定属性221

        8.3.5确定服务222

        8.3.6类图描述文档222

        8.3.7包图描述文档223

        8.4建立动态模型224

        8.4.1建立顺序图及其描述文档224

        8.4.2建立状态图及其描述文档226

        8.4.3建立协作图及其描述文档227

        8.4.4建立活动图及其描述文档228

        8.5本章小结230

        习题230

        第9章面向对象设计/232

        9.1面向对象设计概述232

        9.1.1面向对象分析与设计的关系232

        9.1.2面向对象设计原则233

        9.2精化类及类间关系234

        9.2.1设计类的属性234

        9.2.2设计类的方法235

        9.2.3设计类间泛化关系236

        9.2.4设计关联类237

        9.3数据设计238

        9.3.1基于关系数据库的数据设计238

        9.3.2基于其他方式的数据设计240

        9.4人机交互设计241

        9.5建立实现模型242

        9.5.1构件图及其描述文档242

        9.5.2配置图及其描述文档244

        9.6设计模式简介245

        9.6.1概述245

        9.6.2Singleton模式246

        9.6.3Abstract Factory模式248

        9.6.4Mediator模式250

        9.6.5Adapter模式252

        9.6.6Iterator模式254

        9.6.7State模式257

        9.7面向对象的测试259

        9.7.1面向对象测试概述259

        9.7.2面向对象的单元测试260

        9.8本章小结262

        习题263

        第10章软件维护/266

        10.1软件维护概述266

        10.1.1软件维护的任务266

        10.1.2软件维护的特点267

        10.1.3软件维护的分类267

        10.2软件维护过程268

        10.2.1软件维护方式269

        10.2.2软件维护管理的基本内容270

        10.2.3维护中存在的问题274

        10.2.4维护活动记录275

        10.3软件的可维护性276

        10.3.1可维护性因素276

        10.3.2提高软件的可维护性277

        10.4逆向工程279

        10.5本章小结281

        习题282

        第11章软件项目管理/283

        11.1软件项目管理概述283

        11.1.1软件项目管理的特点和内容283

        11.1.2软件项目管理目标284

        11.1.3软件项目管理的4P观点285

        11.2软件项目规模度量286

        11.2.1代码行技术287

        11.2.2功能点计算288

        11.2.3代码行与功能点间的转换291

        11.3软件项目估算292

        11.3.1代码行和功能点的其他估算模型292

        11.3.2专家估算模型292

        11.3.3Putnam模型293

        11.3.4COCOMO模型293

        11.3.5项目估算模型的小结296

        11.4项目进度管理296

        11.4.1项目进度控制296

        11.4.2甘特图297

        11.4.3工程网络图298

        11.5项目风险管理299

        11.5.1软件风险概念300

        11.5.2风险管理过程300

        11.6项目质量管理303

        11.6.1软件质量因素304

        11.6.2软件质量保证活动308

        11.6.3软件质量保证计划309

        11.7软件配置管理310

        11.7.1软件配置项311

        11.7.2配置管理过程311

        11.7.3软件配置管理计划314

        11.8项目人员组织管理316

        11.8.1团队组织316

        11.8.2团队组织方式316

        11.9软件能力成熟度模型318

        11.9.1基本概念318

        11.9.2软件能力成熟度模型等级320

        11.9.3关键过程域320

        11.10本章小结321

        习题322

        参考文献/324
查看详情
相关图书 / 更多