计算机系统导论

计算机系统导论
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: 编著
2023-08
版次: 1
ISBN: 9787111730934
定价: 79.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 304页
字数: 423千字
  • 本书主要面向应用型大学计算机类专业学生,从程序员的视角出发,围绕可执行文件的生成、加载和执行,重点介绍如何利用计算机系统相关知识来编写更有效的程序。全书将每个环节涉及的硬件和软件的基本概念关联起来,帮助学生建立完整的层次框架,从而加强“系统观”。本书共分8章,涵盖计算机系统基础、高级语言程序、数据的机器级表示、数据的基本运算、指令集体系结构、程序的机器级表示、程序的链接、程序的加载和执行等内容。本书内容详尽、概念清楚、实例丰富,适合作为高等学校计算机专业计算机系统相关课程的教材,也适合相关专业的研究生和技术人员阅读参考。 目  录

    前言

    第1章 计算机系统概述 1

    1.1 计算机基本工作原理 1

    1.1.1 冯·诺依曼结构基本思想 1

    1.1.2 冯·诺依曼模型机基本结构 2

    1.1.3 程序和指令的执行过程 4

    1.2 程序的开发与运行 7

    1.2.1 程序设计语言和翻译程序 7

    1.2.2 从源程序到可执行文件 9

    1.2.3 可执行文件的启动和执行 11

    1.3 计算机系统的层次结构 12

    1.3.1 计算机系统抽象层的转换 12

    1.3.2 计算机系统核心层之间的关联 14

    1.3.3 计算机系统的不同用户 17

    1.4 本书的主要内容和组织结构 19

    1.5 小结 21

    习题 22

    第2章 高级语言程序 23

    2.1 C语言概述 23

    2.2 变量和常量及其类型 24

    2.2.1 C程序中的变量及其类型 24

    2.2.2 C程序中的常量及其类型 25

    2.3 表达式及运算符 26

    2.3.1 C语言表达式中的运算符 26

    2.3.2 C语言程序中的运算 27

    2.4 控制结构和函数调用 29

    2.4.1 C语言中的控制结构 29

    2.4.2 C语言中的函数调用 30

    2.4.3 变量的作用域及其存储分配 32

    2.4.4 C标准I/O库函数 35

    2.5 小结 37

    习题 37

    第3章 数据的机器级表示 39

    3.1 二进制编码和进位计数制 39

    3.1.1 信息的二进制编码 39

    3.1.2 进位计数制 40

    3.1.3 进位计数制之间数据的转换 41

    3.2 整数的表示 44

    3.2.1 定点数的编码表示 44

    3.2.2 无符号整数和带符号整数的表示 49

    3.2.3 C语言中的整数及其相互转换 49

    3.3 浮点数的表示 52

    3.3.1 浮点数的表示范围 52

    3.3.2 浮点数的规格化 53

    3.3.3 IEEE 754浮点数标准 53

    3.3.4 C语言中的浮点数类型 57

    3.4 非数值数据的编码表示 59

    3.4.1 位串或逻辑值 59

    3.4.2 西文字符 59

    3.4.3 汉字字符 60

    3.5 数据的宽度和存储 62

    3.5.1 数据的宽度和长度单位 62

    3.5.2 数据的存储和排列顺序 64

    3.5.3 数据扩展和数据截断操作 69

    3.6 小结 70

    习题 70

    第4章 数据的基本运算 74

    4.1 布尔代数和逻辑运算 74

    4.1.1 布尔代数 74

    4.1.2 逻辑电路基础 76

    4.2 基本运算电路 77

    4.2.1 多路选择器 77

    4.2.2 全加器和加法器 77

    4.2.3 带标志信息加法器 78

    4.2.4 算术逻辑部件 79

    4.3 整数加减运算 80

    4.3.1 补码加减运算器 80

    4.3.2 无符号整数加减运算 83

    4.3.3 带符号整数加减运算 84

    4.3.4 对整数加减运算结果的解释 85

    4.4 整数的乘运算 86

    4.4.1 无符号数乘法运算 87

    4.4.2 原码乘法运算 88

    4.4.3 补码乘法运算 89

    4.4.4 两种整数乘的关系 90

    4.5 整数的除运算 92

    4.5.1 无符号数除法运算 93

    4.5.2 原码除法运算 94

    4.5.3 补码除法运算 96

    4.6 整数常量的乘除运算 97

    4.7 浮点数运算 98

    4.7.1 浮点数加减运算 99

    4.7.2 浮点数乘除运算 104

    4.7.3 浮点运算异常和精度 105

    4.8 小结 107

    习题 108

    第5章 指令集体系结构 113

    5.1 程序转换概述 113

    5.1.1 机器指令与汇编指令 113

    5.1.2 指令集体系结构概述 115

    5.1.3 生成机器代码的过程 116

    5.2 IA-32指令系统概述 122

    5.2.1 数据类型及格式 123

    5.2.2 寄存器组织 124

    5.2.3 操作数的寻址方式 128

    5.2.4 机器指令格式 132

    5.3 IA-32常用指令类型 133

    5.3.1 传送指令 133

    5.3.2 定点算术运算指令 137

    5.3.3 按位运算指令 140

    5.3.4 程序执行流控制指令 142

    5.3.5 x87浮点处理指令 147

    5.3.6 MMX/SSE指令集 150

    5.4 兼容IA-32的64位系统 152

    5.4.1 x86-64的发展简史 152

    5.4.2 x86-64的基本特点 153

    5.4.3 x86-64的基本指令 154

    5.5 小结 157

    习题 157

    第6章 程序的机器级表示 160

    6.1 过程调用的机器级表示 160

    6.1.1 IA-32中过程的调用约定 160

    6.1.2 变量的作用域和生存期 164

    6.1.3 按值传递参数和按地址传递

    参数 166

    6.1.4 递归过程调用 171

    6.1.5 非静态局部变量的存储分配 173

    6.1.6 x86-64的过程调用 176

    6.2 流程控制语句的机器级表示 181

    6.2.1 选择语句的机器级表示 182

    6.2.2 循环结构的机器级表示 186

    6.3 复杂数据类型的分配和访问 189

    6.3.1 数组的分配和访问 189

    6.3.2 结构体数据的分配和访问 193

    6.3.3 联合体数据的分配和访问 196

    6.3.4 数据的对齐 198

    6.4 越界访问和缓冲区溢出 201

    6.4.1 缓冲区溢出 201

    6.4.2 缓冲区溢出攻击 203

    6.4.3 缓冲区溢出攻击的防范 206

    6.5 小结 209

    习题 210

    第7章 程序的链接 223

    7.1 编译、汇编和静态链接 223

    7.1.1 预处理、编译和汇编 223

    7.1.2 可执行目标文件的生成 225

    7.2 目标文件格式 227

    7.2.1 ELF目标文件格式 227

    7.2.2 可重定位目标文件格式 228

    7.2.3 可执行目标文件格式 232

    7.2.4 可执行文件的存储器映射 234

    7.3 符号表和符号解析 236

    7.3.1 符号和符号表 236

    7.3.2 符号解析 239

    7.3.3 与静态库的链接 243

    7.4 重定位 246

    7.4.1 重定位信息 246

    7.4.2 重定位过程 247

    7.5 动态链接 251

    7.5.1 动态链接的特性 251

    7.5.2 程序加载时的动态链接 252

    7.5.3 程序运行时的动态链接 253

    7.5.4 位置无关代码 255

    7.6 小结 260

    习题 260

    第8章 程序的加载和执行 266

    8.1 进程与可执行文件的加载 266

    8.1.1 程序和进程的概念 266

    8.1.2 Linux系统的虚拟地址空间 267

    8.1.3 进程的存储器映射 270

    8.1.4 程序的加载过程 271

    8.2 进程的控制 274

    8.2.1 进程的逻辑控制流 275

    8.2.2 进程的上下文切换 276

    8.3 程序执行与CPU基本组成 278

    8.3.1 程序及指令的执行过程 278

    8.3.2 打断程序正常执行的事件 280

    8.3.3 CPU的基本功能和组成 281

    8.4 小结 283

    习题 284

    附录A gcc的常用命令行选项 287

    附录B GDB的常用命令 288

    参考文献 291
  • 内容简介:
    本书主要面向应用型大学计算机类专业学生,从程序员的视角出发,围绕可执行文件的生成、加载和执行,重点介绍如何利用计算机系统相关知识来编写更有效的程序。全书将每个环节涉及的硬件和软件的基本概念关联起来,帮助学生建立完整的层次框架,从而加强“系统观”。本书共分8章,涵盖计算机系统基础、高级语言程序、数据的机器级表示、数据的基本运算、指令集体系结构、程序的机器级表示、程序的链接、程序的加载和执行等内容。本书内容详尽、概念清楚、实例丰富,适合作为高等学校计算机专业计算机系统相关课程的教材,也适合相关专业的研究生和技术人员阅读参考。
  • 目录:
    目  录

    前言

    第1章 计算机系统概述 1

    1.1 计算机基本工作原理 1

    1.1.1 冯·诺依曼结构基本思想 1

    1.1.2 冯·诺依曼模型机基本结构 2

    1.1.3 程序和指令的执行过程 4

    1.2 程序的开发与运行 7

    1.2.1 程序设计语言和翻译程序 7

    1.2.2 从源程序到可执行文件 9

    1.2.3 可执行文件的启动和执行 11

    1.3 计算机系统的层次结构 12

    1.3.1 计算机系统抽象层的转换 12

    1.3.2 计算机系统核心层之间的关联 14

    1.3.3 计算机系统的不同用户 17

    1.4 本书的主要内容和组织结构 19

    1.5 小结 21

    习题 22

    第2章 高级语言程序 23

    2.1 C语言概述 23

    2.2 变量和常量及其类型 24

    2.2.1 C程序中的变量及其类型 24

    2.2.2 C程序中的常量及其类型 25

    2.3 表达式及运算符 26

    2.3.1 C语言表达式中的运算符 26

    2.3.2 C语言程序中的运算 27

    2.4 控制结构和函数调用 29

    2.4.1 C语言中的控制结构 29

    2.4.2 C语言中的函数调用 30

    2.4.3 变量的作用域及其存储分配 32

    2.4.4 C标准I/O库函数 35

    2.5 小结 37

    习题 37

    第3章 数据的机器级表示 39

    3.1 二进制编码和进位计数制 39

    3.1.1 信息的二进制编码 39

    3.1.2 进位计数制 40

    3.1.3 进位计数制之间数据的转换 41

    3.2 整数的表示 44

    3.2.1 定点数的编码表示 44

    3.2.2 无符号整数和带符号整数的表示 49

    3.2.3 C语言中的整数及其相互转换 49

    3.3 浮点数的表示 52

    3.3.1 浮点数的表示范围 52

    3.3.2 浮点数的规格化 53

    3.3.3 IEEE 754浮点数标准 53

    3.3.4 C语言中的浮点数类型 57

    3.4 非数值数据的编码表示 59

    3.4.1 位串或逻辑值 59

    3.4.2 西文字符 59

    3.4.3 汉字字符 60

    3.5 数据的宽度和存储 62

    3.5.1 数据的宽度和长度单位 62

    3.5.2 数据的存储和排列顺序 64

    3.5.3 数据扩展和数据截断操作 69

    3.6 小结 70

    习题 70

    第4章 数据的基本运算 74

    4.1 布尔代数和逻辑运算 74

    4.1.1 布尔代数 74

    4.1.2 逻辑电路基础 76

    4.2 基本运算电路 77

    4.2.1 多路选择器 77

    4.2.2 全加器和加法器 77

    4.2.3 带标志信息加法器 78

    4.2.4 算术逻辑部件 79

    4.3 整数加减运算 80

    4.3.1 补码加减运算器 80

    4.3.2 无符号整数加减运算 83

    4.3.3 带符号整数加减运算 84

    4.3.4 对整数加减运算结果的解释 85

    4.4 整数的乘运算 86

    4.4.1 无符号数乘法运算 87

    4.4.2 原码乘法运算 88

    4.4.3 补码乘法运算 89

    4.4.4 两种整数乘的关系 90

    4.5 整数的除运算 92

    4.5.1 无符号数除法运算 93

    4.5.2 原码除法运算 94

    4.5.3 补码除法运算 96

    4.6 整数常量的乘除运算 97

    4.7 浮点数运算 98

    4.7.1 浮点数加减运算 99

    4.7.2 浮点数乘除运算 104

    4.7.3 浮点运算异常和精度 105

    4.8 小结 107

    习题 108

    第5章 指令集体系结构 113

    5.1 程序转换概述 113

    5.1.1 机器指令与汇编指令 113

    5.1.2 指令集体系结构概述 115

    5.1.3 生成机器代码的过程 116

    5.2 IA-32指令系统概述 122

    5.2.1 数据类型及格式 123

    5.2.2 寄存器组织 124

    5.2.3 操作数的寻址方式 128

    5.2.4 机器指令格式 132

    5.3 IA-32常用指令类型 133

    5.3.1 传送指令 133

    5.3.2 定点算术运算指令 137

    5.3.3 按位运算指令 140

    5.3.4 程序执行流控制指令 142

    5.3.5 x87浮点处理指令 147

    5.3.6 MMX/SSE指令集 150

    5.4 兼容IA-32的64位系统 152

    5.4.1 x86-64的发展简史 152

    5.4.2 x86-64的基本特点 153

    5.4.3 x86-64的基本指令 154

    5.5 小结 157

    习题 157

    第6章 程序的机器级表示 160

    6.1 过程调用的机器级表示 160

    6.1.1 IA-32中过程的调用约定 160

    6.1.2 变量的作用域和生存期 164

    6.1.3 按值传递参数和按地址传递

    参数 166

    6.1.4 递归过程调用 171

    6.1.5 非静态局部变量的存储分配 173

    6.1.6 x86-64的过程调用 176

    6.2 流程控制语句的机器级表示 181

    6.2.1 选择语句的机器级表示 182

    6.2.2 循环结构的机器级表示 186

    6.3 复杂数据类型的分配和访问 189

    6.3.1 数组的分配和访问 189

    6.3.2 结构体数据的分配和访问 193

    6.3.3 联合体数据的分配和访问 196

    6.3.4 数据的对齐 198

    6.4 越界访问和缓冲区溢出 201

    6.4.1 缓冲区溢出 201

    6.4.2 缓冲区溢出攻击 203

    6.4.3 缓冲区溢出攻击的防范 206

    6.5 小结 209

    习题 210

    第7章 程序的链接 223

    7.1 编译、汇编和静态链接 223

    7.1.1 预处理、编译和汇编 223

    7.1.2 可执行目标文件的生成 225

    7.2 目标文件格式 227

    7.2.1 ELF目标文件格式 227

    7.2.2 可重定位目标文件格式 228

    7.2.3 可执行目标文件格式 232

    7.2.4 可执行文件的存储器映射 234

    7.3 符号表和符号解析 236

    7.3.1 符号和符号表 236

    7.3.2 符号解析 239

    7.3.3 与静态库的链接 243

    7.4 重定位 246

    7.4.1 重定位信息 246

    7.4.2 重定位过程 247

    7.5 动态链接 251

    7.5.1 动态链接的特性 251

    7.5.2 程序加载时的动态链接 252

    7.5.3 程序运行时的动态链接 253

    7.5.4 位置无关代码 255

    7.6 小结 260

    习题 260

    第8章 程序的加载和执行 266

    8.1 进程与可执行文件的加载 266

    8.1.1 程序和进程的概念 266

    8.1.2 Linux系统的虚拟地址空间 267

    8.1.3 进程的存储器映射 270

    8.1.4 程序的加载过程 271

    8.2 进程的控制 274

    8.2.1 进程的逻辑控制流 275

    8.2.2 进程的上下文切换 276

    8.3 程序执行与CPU基本组成 278

    8.3.1 程序及指令的执行过程 278

    8.3.2 打断程序正常执行的事件 280

    8.3.3 CPU的基本功能和组成 281

    8.4 小结 283

    习题 284

    附录A gcc的常用命令行选项 287

    附录B GDB的常用命令 288

    参考文献 291
查看详情
12
您可能感兴趣 / 更多
计算机系统导论
计算机组成与系统结构习题解答和教学指导(第3版)
袁春风
计算机系统导论
计算机组成与设计(基于ARM架构)
袁春风 陈微
计算机系统导论
计算机组成与系统结构(第3版)
袁春风;唐杰;杨若瑜;李俊
计算机系统导论
数字逻辑与计算机组成习题解答与实验教程
袁春风 吴海军 武港山 余子濠 编著
计算机系统导论
数字逻辑与计算机组成
袁春风 武港山 吴海军 余子濠
计算机系统导论
计算机组成与设计(基于RISC-V架构)
袁春风、余子濠 著
计算机系统导论
计算机系统基础 第2版
袁春风 余子濠 著
计算机系统导论
计算机系统基础习题解答与教学指导
袁春风
计算机系统导论
计算机组成与系统结构习题解答和教学指导·第2版/21世纪大学本科计算机专业系列教材
袁春风 著
计算机系统导论
计算机组成原理
袁春风 著;全国高等教育自学考试 指导
计算机系统导论
计算机组成与系统结构习题解答与教学指导(21世纪大学本科计算机专业系列教材)
袁春风 编
计算机系统导论
计算机组成与系统结构
袁春风 著