《嵌入式软件基础 C语言与汇编融合 翻译版》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:(美)Daniel W.Lewis著;陈宗斌译
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2005
  • ISBN:7040161052
  • 页数:235 页
图书介绍:本书是对高等院校本科二年级计算机组成原理与汇编语言程序设计的传统教材的全新替代版。本书以实践中最常运用的方式讲解汇编语言——实现小型、快速或特殊目的的例程,这些例程由主程序(高级语言编写,如C)调用。通过运用嵌入式软件环境,本书介绍多线程程序设计、可抢占式系统与非可抢占式系统、共享资源和调度,从而为操作系统、实时系统、计算机网络及基于多处理器的设计等后续课程提供了坚实的基础。本书将帮助读者理解通常为人们所忽视的二进制表示的后果和局限性问题;运用定点(而非浮点)实数实现快速实数运算;加强对于作用域、参数传递、递归和内存分配的理解;运用C语言的特性(如位操作和变量访问),这些特性在嵌入式软件中广泛应用;编写Intel x86保护模式下的汇编函数,由C程序调用;估算不同类型输入/输出程序设计的最大数据速率和等待时间;管理多线程、共享资源和临界区;开发程序设计实例,以避免优先级倒置、死锁和共享内存问题。本书适用于高等院校工科各专业本科嵌入式计算机系统程序设计、C语言程序设计及汇编语言程序设计类课程,也可供相关技术人员学习参考。

第1章 导论 1

1.1 什么是嵌入式系统 1

1.2 嵌入式软件设计目标有何独特之处 2

1.3 “实时”意味着什么 4

1.4 “多任务”意味着什么 5

1.5 嵌入式处理器的功能有多强 6

1.6 使用哪些编程语言 6

1.7 什么是“实时内核” 7

1.8 如何构建独特的嵌入式应用程序 8

1.9 典型的嵌入式程序有多大 10

1.10 本书中使用的软件 11

习题 12

2.1 固定精度的二进制数字 13

第2章 数据表示 13

2.1.1 按位记数制 14

2.1.2 二进制-十进制转换 15

2.1.3 十进制-二进制转换 15

2.1.4 计数 16

2.1.5 固定精度和翻转 17

2.1.6 十六进制表示 17

2.2 整数的二进制表示 18

2.2.1 带符号整数 18

2.2.2 同一个值的正的表示和负的表示 19

2.2.3 解释2的补码数的值 20

2.2.4 关于范围和溢出的进一步说明 20

2.2.5 2的补码和硬件复杂性 21

2.3.1 定点表示 24

2.3 实数的二进制表示 24

2.3.2 使用通用的16.16格式的定点表示 26

2.3.3 使用通用的32.32格式的定点表示 27

2.3.4 浮点表示 30

2.4 文本的ASCⅡ表示 32

2.5 二进制编码的十进制表示 34

习题 35

第3章 充分利用C语言 37

3.1 整型数据类型 37

3.2 混合数据类型 40

3.3 有用的trpedef和define 40

3.4 操纵内存中的位 41

3.4.1 测试位 43

3.4.2 设置、清除和反转位 44

3.4.3 提取位 45

3.4.4 插入位 45

3.5 操纵I/O端口中的位 46

3.5.1 只写I/O端口 46

3.5.2 通过读/写区分的端口 47

3.5.3 通过顺序访问区分的端口 47

3.5.4 通过写入数据中的位区分的端口 48

3.6 访问内存映射的I/O设备 48

3.6.1 通过指针访问数据 48

3.6.2 数组、指针和“取地址”运算符 49

3.7 结构 50

3.7.1 打包的结构 51

3.7.2 位域 53

3.8.1 强制转换对象的地址 54

3.8 变型访问 54

3.8.2 使用共用体 55

习题 56

第4章 程序员眼中的计算机结构 58

4.1 内存 58

4.2 中央处理器 59

4.2.1 运算器 60

4.2.2 其他寄存器 61

4.2.3 控制器 61

4.3 输入/输出 62

4.4 Intel架构介绍 63

4.4.2 指令操作数 64

4.4.1 指令格式 64

4.4.3 操作数限制 65

4.4.4 寄存器 66

4.4.5 栈 68

4.5 Intel实模式架构 69

4.5.1 分段寻址 70

4.5.2 寻址模式 72

4.6 Intel保护模式架构 74

4.6.1 段寄存器和全局描述符表 74

4.6.2 平坦内存模型 75

4.6.3 寻址模式 75

4.7 操作数与地址长度覆盖前缀 76

4.8 Intel数据操纵指令 76

4.8.1 数据移动、栈和I/O指令 77

4.8.2 算术指令 78

4.8.3 按位指令 80

4.8.4 移位指令 81

习题 83

第5章 C语言与汇编语言的融合 85

5.1 用汇编语言编程 85

5.2 寄存器使用约定 86

5.3 寻址选项的典型应用 87

5.3.1 访问地址为常量的数据 87

5.3.2 访问地址为变量的数据 88

5.4 指令序列 89

5.4.1 复合条件 91

5.4.3 建立循环 93

5.4.2 If-Then-Else语句 93

5.4.4 带字符串指令的更快的循环 94

5.5 过程调用和返回 96

5.6 参数传递 97

5.7 获取参数 99

5.8 一切都是按值传递 100

5.9 临时变量 101

习题 104

第6章 输入/输出编程 106

6.1 Intel I/O指令 106

6.2 同步、传送速率和等待时间 107

6.3 轮询的等待循环 108

6.4.1 硬件响应 110

6.4 中断驱动的I/O 110

6.4.2 中断服务例程 112

6.4.3 可编程中断控制器 114

6.4.4 缓冲区与队列 115

6.4.5 用汇编语言编写中断服务例程 117

6.4.6 用C语言编写中断服务例程 117

6.4.7 不可屏蔽的中断 119

6.4.8 软件中断 120

6.4.9 异常 120

6.5 直接存储器存取 121

6.5.1 双缓冲 122

6.6 几种方法的比较 123

习题 123

7.1.1 线程状态和串行化 126

第7章 并发软件 126

7.1 前台/后台系统 126

7.1.2 管理等待时间 127

7.1.3 防止中断越界 129

7.1.4 将工作转移到后台 131

7.2 多线程编程 131

7.2.1 独立线程的并发执行 132

7.2.2 环境切换 133

7.2.3 非抢先式(协作式)多任务处理 133

7.2.4 抢先式多任务 134

7.3 共享资源和临界区 135

7.3.3 自旋锁 136

7.3.2 禁用任务切换 136

7.3.1 禁用中断 136

7.3.4 互斥对象 137

7.3.5 信号量 137

习题 138

第8章 调度 140

8.1 线程状态 140

8.2 挂起线程 140

8.3 环境切换 141

8.4 循环调度 143

8.5 基于优先级的调度 143

8.5.1 优先级倒置 143

8.5.3 优先级最高限度协议 144

8.5.2 优先级继承协议 144

8.6 分配优先级 145

8.6.1 截止期限驱动的调度 145

8.6.2 速率单调调度 146

8.7 死锁 146

8.8 监视计时器 147

习题 149

第9章 内存管理 151

9.1 C语言中的对象 151

9.2 作用域 152

9.2.1 进一步认识局部作用域 152

9.2.2 进一步认识全局作用域 153

9.3 生存期 154

9.4 自动分配 154

9.4.1 存储类“寄存器” 155

9.5 静态分配 156

9.6 用于区分静态与自动的3个程序 157

9.6.1 对象创建 157

9.6.2 对象初始化 158

9.6.3 对象析构 159

9.7 动态分配 160

9.7.1 内存碎片 161

9.7.2 内存分配池 161

9.8 可变大小的自动分配 161

9.8.1 可变大小的数组 162

9.9 递归函数与内存分配 163

习题 164

第10章 共享内存 170

10.1 识别共享对象 170

10.1.1 共享全局数据 170

10.1.2 共享私有数据 170

10.1.3 共享函数 171

10.2 可重入函数 171

10.3 只读数据 171

10.3.1 类型限定符const 172

10.4 应避免的编码习惯 172

10.4.1 在局部静态对象中保持内部状态的函数 173

10.4.2 返回局部静态对象地址的函数 174

10.5 访问共享内存 176

10.5.2 只读和只写访问 177

10.5.1 处理器字长的影响 177

10.5.3 类型限定符volatile 178

习题 180

第11章 系统初始化 182

11.1 内存布局 182

11.2 CPU 183

11.2.1 建立平坦内存模型 183

11.2.2 切换到保护模式 185

11.3 C运行时环境 186

11.3.1 从ROM复制到RAM中 186

11.3.2 将未初始化数据置0 187

11.3.3 建立堆 188

11.4.1 计时器0:计时器滴答信号 189

11.4 系统计时器 189

11.4.2 计时器1:内存刷新 190

11.4.3 计时器2:扬声器频率 190

11.5 中断系统 191

11.5.1 初始化IDT 191

11.5.2 初始化8259 PIC 193

11.5.3 安装新的中断服务例程 194

附录A 配书光盘上的内容 196

附录B DJGPP C/C++编译器 197

附录C NASM汇编器 199

附录D 编程项目 201

附录E libepc库 216

附录F 引导加载程序 225

附录G 词汇表 228