目录 1
第一章 基础 1
1.1 机器结构 2
1.2 程序设计系统各部分的演变 4
1.2.1 汇编程序 4
1.2.2 装配程序 5
1.2.3 宏处理程序 7
1.2.4 编译程序 7
1.2.5 形式系统 8
1.3 操作系统的演变 8
1.4 操作系统的用户观点:功能 11
1.5 操作系统的用户观点:批量控制语言 13
1.6 操作系统的用户观点:机能 15
1.7 小结 16
习题 17
第二章 机器结构、机器语言和汇编语言 22
2.1 机器的一般结构 22
2.1.1 熟悉新机器的一般途径 25
2.1.2 360和370机的结构 26
2.1.2.1 存贮器 26
2.1.2.2 寄存器 27
2.1.2.3 数据 29
2.1.2.4 指令 31
2.1.2.5 特殊的性能 37
2.2 机器语言 37
2.2.1 无循环的冗长方式 39
2.2.2 把指令作为数据来实现地址修改 40
2.2.3 用变址寄存器实现地址修改 43
2.2.4 循环 44
2.3 汇编语言 45
2.3.1 汇编语言程序 46
2.3.2 使用文字的例子 48
2.4 小结 51
习题 51
第三章 汇编程序 63
3.1 一般的设计过程 64
3.2 汇编程序的设计 64
3.2.1 问题的陈述 64
3.2.2 数据结构 67
3.2.3 数据基的格式 70
3.2.4 算法 78
3.2.5 寻找模块 83
3.3 表处理:查找和排序 86
3.3.1 线性查找 87
3.3.2 对分查找 88
3.3.3.1 互换排序 91
3.3.3 排序 91
3.3.3.2 SHELL排序 93
3.3.3.3 吊桶排序 94
3.3.3.4 基数调换排序 95
3.3.3.5 地址计算排序 97
3.3.3.6 各种排序法的比较 99
3.3.4 杂凑或随机项目查找 100
3.4 小结 104
3.5 结束语 105
习题 106
第四章 宏语言和宏处理程序 121
4.1 宏指令 122
4.2 宏机能的性质 124
4.2.1 宏指令变元 124
4.2.2 有条件的宏展开 128
4.2.3 宏内的宏调用 130
4.2.4 定义宏的宏指令 131
4.3 实现 133
4.3.1 受约束的机能的实现:两遍算法 134
4.3.2 单遍算法 141
4.3.3 在宏内宏调用的实现 145
4.3.4 在汇编程序内的实现方法 152
4.4 小结 154
习题 155
第五章 装配程序 162
5.1 装配程序方案 163
5.1.1 “编译并执行”的装配程序 163
5.1.2 一般的装配程序方案 164
5.1.3 绝对装配程序 165
5.1.4 子程序连接 167
5.1.5 重定位装配程序 170
5.1.6 直接连接装配程序 174
5.1.7 其它装配程序方案——装订程序、连接装配程序、覆盖、动态装订程序 179
5.2 绝对装配程序的设计 183
5.3 直接连接装配程序的设计 185
5.3.1 问题的陈述 185
5.3.2 数据结构的说明 195
5.3.3 数据基的格式 196
5.3.4 算法 201
5.4 小结 205
习题 206
第六章 程序设计语言 218
6.1 高级语言的重要意义 219
6.2 高级语言的特性 221
6.3 数据类型和数据结构 222
6.3.1 字符行 223
6.3.3 数据结构 225
6.3.2 字位行—布尔行 225
6.4 存贮分配和名字的作用域 226
6.4.1 存贮的分类 227
6.4.2 分程序结构 227
6.5 存取的灵活性 228
6.5.1 指针 229
6.5.2 标号变量和标号数组 231
6.6 功能的模块化 233
6.6.1 过程 233
6.6.2 递归 233
6.7 异步操作 234
6.7.1 条件 234
6.7.2 信号 235
6.7.3 多重任务 236
6.9 其它用途 237
6.8 扩展性和编译期间使用的宏特性 237
6.10 小结 238
习题 238
第七章 形式系统和程序设计语言:介绍 250
7.1 形式系统在程序设计语言中的应用 250
7.1.1 语言的说明 251
7.1.2 语法制导的编译程序 251
7.1.3 复杂结构的研究 252
7.1.4 结构分析 252
7.2 形式说明 253
7.2.1 形式体系研究 253
7.2.2 形式说明的发展 255
7.3 形式文法 257
7.3.1 形式文法举例 259
7.3.3 句型和句子 260
7.3.2 句子的派生 260
7.4 语言谱系 261
7.5 BACKUS-NAUR形式——BACKUS范式—— 263
BNF 263
7.6 规范系统 265
7.6.1 举例:语法描述 269
7.6.2 翻译说明 272
7.6.3 识别和翻译算法 273
7.7 规范系统和形式系统 279
7.8 小结 284
习题 284
第八章 编译程序 292
第一部分 292
8.1 问题的陈述 292
8.1.1 问题1——识别基本元素 293
8.1.2 问题2——识别语法单位并解释含义 295
8.1.3 中间形式 296
8.1.3.1 算术语句 297
8.1.3.2 非算术语句 298
8.1.3.3 不可执行的语句 299
8.1.4 问题3——存贮分配 299
8.1.5 问题4——代码生成 302
8.1.5.1 优化(不依赖于机器的) 304
8.1.5.2 优化(依赖于机器的) 305
8.1.5.3 汇编阶段 306
8.1.6 编译程序的一般模型 307
第二部分 310
8.2 编译程序的各个阶段 310
8.2.1 词法阶段 310
8.2.1.1 任务 310
8.2.1.2 数据基 311
8.2.1.3 算法 312
8.2.1.4 例 314
8.2.2 语法分析阶段 314
8.2.2.1 数据基 316
8.2.2.2 算法 318
8.2.2.3 例 318
8.2.3 解释阶段 319
8.2.3.1 数据基 320
8.2.3.2 算法 322
8.2.3.3 例 322
8.2.4 优化 329
8.2.4.1 数据基 329
8.2.4.2 算法 330
8.2.5 存贮分配 334
8.2.5.1 数据基 334
8.2.5.2 算法 336
8.2.6 代码生成 338
8.2.6.1 数据基 340
8.2.6.2 算法 340
8.2.7 汇编阶段 347
8.2.7.1 数据基 348
8.2.7.2 算法 348
8.2.8 编译程序的各遍 348
8.2.9 预告 350
第三部分 350
8.3 数据结构 351
8.3.1 问题的叙述 351
8.3.2 实现方法 355
8.4 递归、调用和返回语句 357
8.5 存贮种类——用途 362
8.5.2 自动存贮 363
8.5.1 静态存贮 363
8.5.3 内部受控存贮 364
8.5.4 外部受控存贮 364
8.5.5 有基存贮 365
8.6 实现方法 365
8.6.1 静态存贮 365
8.6.2 自动存贮 366
8.6.3 受控存贮和有基存贮 367
8.7 分程序结构 368
8.7.1 分程序结构的存取信息 370
8.7.2 分程序结构的存贮分配 372
8.8 非局部的GO TO 376
8.9 中断 377
8.10 指针 377
8.11 小结 378
习题 379
第九章 操作系统 388
第一部分 389
9.1 I/O程序设计:多处理机和中断机构 389
9.1.1 多处理机系统的演变 389
9.1.2 I/O程序设计 392
9.1.3 I/O处理机结构 392
9.1.4 I/O程序举例 395
9.1.5 CPU和通道之间的通讯 397
9.1.6 中断结构和中断处理 399
9.1.7 I/O中断处理举例(图9.9) 402
9.1.8 多处理机 407
第二部分 407
9.2 存贮管理 407
9.2.1 单一连续分配 408
9.2.2 分割分配 409
9.2.3 可重定位的分割分配 412
9.2.4 分页分配 416
9.2.5 请求分页分配 419
9.2.6 分段分配 422
9.2.7 分段—分页分配 429
第三部分 431
9.3 处理机管理 431
9.3.1 调度程序 433
9.3.2 交通管制程序 436
9.3.3 竞争情况 437
9.3.4 僵持 438
9.3.5 多处理机系统 439
9.4 设备管理 445
9.4.1 设备特性 445
第四部分 445
9.4.2 设备管理技术 449
第五部分 452
9.5 信息管理 452
9.5.1 文件系统的发展 453
9.5.2 文件系统的一般结构 454
9.5.3 文件系统举例 456
9.5.4 文件系统的一般性能 459
9.5.5 重新回到一般的文件系统模型 469
9.5.6 分段 471
9.5.7 MULTICS文件系统和一般模型 479
9.6 小结 479
习题 480
第十章 参考文献 490
附录A IBM/360系统标准数据卡片 500
附录B 连接约定 533