Fundamentals of Embedded Software:Where C and Assembly Meet

副标题:无

作   者:(美)Daniel W.Lewis著;陈宗斌译

分类号:

ISBN:9787040161052

微信扫一扫,移动浏览光盘

简介

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

目录

序言
第1章 导论
1.1 什么是嵌入式系统
1.2 嵌入式软件设计目标有何独特之处
1.3 “实时”意味着什么
1.4 “多任务”意味着什么
1.5 嵌入式处理器的功能有多强
1.6 使用哪些编程语言
1.7 什么是“实时内核”
1.8 如何构建独特的嵌入式应用程序
1.9 典型的嵌入式程序有多大
1.10 本书中使用的软件
习题

第2章 数据表示
2.1 固定精度的二进制数字
2.1.1 按位记数制
2.1.2 二进制一十进制转换
2.1.3 十进制一二进制转换
2.1.4 计数
2.1.5 固定精度和翻转
2.1.6 十六进制表示
2.2 整数的二进制表示
2.2.1 带符号整数
2.2.2 同一个值的正的表示和负的表示
2.2.3 解释2的补码数的值
2.2.4 关于范围和溢出的进一步说明
2.2.5 2的补码和硬件复杂性
2.3 实数的二进制表示
2.3.1 定点表示
2.3.2 使用通用的16.16格式的定点表示
2.3.3 使用通用的32.32格式的定点表示
2.3.4 浮点表示
2.4 文本的ASCII表示
2.5 二进制编码的十进制表示
习题

第3章 充分利用C语言
3.1 整型数据类型
3.2 混合数据类型
3.3 有用的typedef和define
3.4 操纵内存中的位
3.4.1 测试位
3.4.2 设置、清除和反转位
3.4.3 提取位
3.4.4 插入位
3.5 操纵:I/O端口中的位
3.5.1 只写I/O端口
3.5.2 通过读/写区分的端口
3.5.3 通过顺序访问区分的端口
3.5.4 通过写入数据中的位区分的端口
3.6 访问内存映射的I/O设备
3.6.1 通过指针访问数据
3.6.2 数组、指针和“取地址”运算符
3.7 结构
3.7.1 打包的结构
3.7.2 位域
3.8 变型访问
3.8.1 强制转换对象的地址
3.8.2 使用共用体
习题

第4章 程序员眼中的计算机结构
4.1 内存
4.2 中央处理器
4.2.1 运算器
4.2.2 其他寄存器
4.2.3 控制器
4.3 输入/输出
4.4 Intel架构介绍
4.4.1 指令格式
4.4.2 指令操作数
4.4.3 操作数限制
4.4.4 寄存器
4.4.5 栈
4.5 Intel实模式架构
4.5.1 分段寻址
4.5.2 寻址模式
4.6 Intel保护模式架构:
4.6.1 段寄存器和全局描述符表
4.6.2 平坦内存模型
4.6.3 寻址模式
4.7 操作数与地址长度覆盖前缀
4.8 Intel数据操纵指令
4.8.1 数据移动、栈和I/O指令
4.8.2 算术指令
4.8.3 按位指令
4.8.4 移位指令
习题

第5章 C语言与汇编语言的融合
5.1 用汇编语言编程
5.2 寄存器使用约定
5.3 寻址选项的典型应用
5.3.1 访问地址为常量的数据
5.3.2 访问地址为变量的数据
5.4 指令序列
5.4.1 复合条件
5.4.2 If-Then-Else语句
5.4.3 建立循环
5.4.4 带字符串指令的更快的循环
5.5 过程调用和返回
5.6 参数传递
5.7 获取参数
5.8 一切都是按值传递
5.9 临时变量
习题

第6章 输入/输出编程
6.1 IntelI/O指令
6.2 同步、传送速率和等待时间
6.3 轮询的等待循环
6.4 中断驱动的I/O
6.4.1 硬件响应
6.4.2 中断服务例程
6.4.3 可编程中断控制器
6.4.4 缓冲区与队列
6.4.5 用汇编语言编写中斯服务例程
6.4.6 用C语言编写中断服务例程
6,4.7 不可屏蔽的中断
6.4.8 软件中断
6.4.9 异常
6.5 直接存储器存取
6.5.1 双缓冲
6.6 几种方法的比较
习题

第7章 并发软件
7.1 前台/后台系统
7.1.1 线程状态和串行化
7.1.2 管理等待时间
7.1.3 防止中断越界
7.1.4 将工作转移到后台
7.2 多线程编程
7.2.1 独立线程的并发执行
7.2.2 环境切换
7.2.3 非抢先式(协作式)多任务处理
7.2.4 抢先式多任务
7.3 共享资源和临界区
7.3.1 禁用中断
7.3.2 禁用任务切换
7.3.3 自旋锁
7.3.4 互斥对象
7.3.5 信号量
习题

第8章 调度
8.1 线程状态
8.2 挂起线程
8.3 环境切换
8.4 循环调度
8.5 基于优先级的调度
8.5.1 优先级倒置
8.5.2 优先级继承协议
8.5.3 优先级最高限度协议
8.6 分配优先级
8.6.1 截止期限驱动的调度
8.6.2 速率单调调度
8.7 死锁
8.8 监视计时器
习题

第9章 内存管理
9.1 C语言中的对象
9.2 作用域
9.2.1 进一步认识局部作用域
9.2.2 进一步认识全局作用域
9.3 生存期
9.4 自动分配
9.4.1 存储类“寄存器”
9.5 静态分配
9.6 用于区分静态与自动的3个程序
9.6.1 对象创建
9.6.2 对象初始化
9.6.3 对象析构
9.7 动态分配
9.7.1 内存碎片
9.7.2 内存分配池
9.8 可变大小的自动分配
9.8.1 可变大小的数组
9.9 递归函数与内存分配
习题

第10章 共享内存
10.1 识别共享对象
10.1.1 共享全局数据
10.1.2 共享私有数据
10.1.3 共享函数
10.2 可重入函数
10.3 只读数据
10.3.1 类型限定符const
10.4 应避免的编码习惯
10.4.1 在局部静态对象中保持内部状态的函数
10.4.2 返回局部静态对象地址的函数
10.5 访问共享内存
10.5.1 处理器字长的影响
10.5.2 只读和只写访问
10.5.3 类型限定符volatile
习题

第11章 系统初始化
11.1 内存布局
11.2 CPU
11.2.1 建立平坦内存模型
11.2.2 切换到保护模式
11.3 C运行时环境
11.3.1 从ROM复制到RAM户
11.3.2 将未初始化数据置
11.3.3 建立堆
11.4 系统计时器
11.4.1 计时器0:计时器滴答信号
11.4.2 计时器1:内存刷新
11.4.3 计时器2:扬声器频率
11.5 中断系统
11.5.1 初始化IDT
11.5.2 初始化8259PIC
11.5.3 安装新的中断服务例程
附录A 配书光盘上的内容
附录B DJGPPC/C++编译器
附录C NAsM汇编器
附录D 编程项目
附录E Libepe库
附录F 引导加载程序
附录G 词汇表

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Fundamentals of Embedded Software:Where C and Assembly Meet
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    亲爱的云图用户,
    光盘内的文件都可以直接点击浏览哦

    无需下载,在线查阅资料!

    loading icon