-
内容大纲
本书是一本向读者介绍计算机系统的教材,可使读者建立对计算机的系统级认识,从而理解C语言程序是如何在计算机中执行的。
本书包括3个部分:第一部分(第1章~第3章)介绍计算机的基本工作原理,包括冯·诺依曼模型、计算机系统的抽象分层、数据在计算机中的表示和数字逻辑电路等;第二部分(第4章~第7章)介绍RISC-V计算机,包括RISC-V的基础整数指令集RV32I、基本的RISC-V处理器、机器语言和汇编语言、子例程/子程序机制,以及简单的输入与输出;第三部分(第8章~第10章)介绍C语言程序在计算机中是如何执行的,包括C函数在RISC-V计算机中的实现、指针和数组在RISC-V计算机中的实现,以及C函数、指针和数组在x86指令系统下的实现。
本书适合计算机相关专业的初学者学习,读者仅需要具备C语言程序设计基础。本书可作为高等院校的教材,也可作为从事计算机软件开发与应用的工程人员的参考书。 -
作者介绍
-
目录
第1章 计算机系统概述
1.1 计算机与计算机系统
1.1.1 通用电子数字计算机
1.1.2 计算机系统
1.2 冯·诺依曼模型
1.2.1 存储器
1.2.2 处理单元
1.2.3 控制单元
1.2.4 I/O设备
1.3 计算机系统的抽象分层
1.3.1 程序
1.3.2 语言处理
1.3.3 操作系统
1.3.4 指令集结构
1.3.5 微处理器
1.3.6 逻辑电路
1.3.7 电子元件
习题
第2章 数据的机器级表示
2.1 位和数据类型
2.1.1 信息的最小单位——位
2.1.2 数据类型
2.2 整数
2.2.1 无符号整数
2.2.2 有符号整数
2.2.3 二进制补码整数
2.2.4 二进制一十进制转换
2.2.5 算术运算
2.3 浮点数
2.4 十六进制表示法
2.5 ASCII
2.6 C语言中的数据类型与二进制表示
2.6.1 C语言中的数据类型
2.6.2 数据类型转换
2.6.3 输入和输出的格式说明符
2.6.4 十六进制字面常量
习题
第3章 数字逻辑电路
3.1 二进制逻辑运算
3.1.1 与函数
3.1.2 或函数
3.1.3 非函数
3.1.4 异或函数
3.1.5 C语言的按位运算符
3.2 晶体管
3.3 门电路
3.3.1 非门
3.3.2 或非门、或门
3.3.3 与门、与非门
3.4 组合逻辑电路
3.4.1 译码器
3.4.2 多路选择器
3.4.3 全加法器
3.4.4 逻辑完备性
3.5 基本存储元件
3.5.1 SR锁存器
3.5.2 门控D锁存器
3.5.3 寄存器
3.6 时序逻辑电路
3.6.1 有限状态机
3.6.2 示例:交通信号灯控制器
3.7 存储器
3.7.1 地址空间
3.7.2 寻址能力
3.7.3 一个4×2的存储器
习题
第4章 指令集结构
4.1 RISC-V指令集结构
4.1.1 内存
4.1.2 寄存器
4.1.3 CISC和RISC
4.1.4 指令格式
4.2 RV32I指令
4.2.1 整数运算指令
4.2.2 数据传送指令
4.2.3 示例:指令序列
4.2.4 条件分支指令
4.2.5 无条件跳转指令
4.2.6 示例:计算一列数之和
4.3 RISC-V处理器
4.3.1 数据通路
4.3.2 控制器
习题
第5章 机器语言与汇编语言
5.1 机器语言程序设计
5.1.1 结构化程序设计和控制指令
5.1.2 机器语言程序示例
5.2 汇编语言程序设计
5.2.1 RISC-V汇编语言程序
5.2.2 汇编语言指令
5.2.3 汇编命令
5.2.4 伪指令
5.3 汇编过程
5.3.1 两趟扫描
5.3.2 第一趟:构建符号表
5.3.3 第二趟:生成机器语言程序
5.4 从C程序到RISC
5.4.1 从C程序到RISC-V示例
5.4.2 switch语句的底层实现
5.4.3 GNU工具链
习题
第6章 子例程
6.1 调用/返回机制
6.1.1 jal/jalr指令
6.1.2 示例:乘法运算
6.2 子例程示例
6.2.1 除法运算
6.2.2 字符串逆序
6.2.3 数据类型转换
6.2.4 寄存器的保存/恢复
6.3 递归子例程
6.3.1 示例:一个错误的Sn子例程
6.3.2 栈——一种抽象数据类型
6.3.3 示例:采用栈机制的Sn子例程
习题
第7章 输入和输出
7.1 自陷机制
7.1.1 系统调用
7.1.2 ecall/mret/csrrw指令
7.1.3 操作系统自陷处理例程
7.2 一个简单的I/0设计
7.2.1 总线结构
7.2.2 I/O设备寄存器
7.2.3 内存映射I/O
7.2.4 异步与同步
7.2.5 轮询
7.3 操作系统服务例程
7.3.1 输入字符服务例程
7.3.2 输出字符服务例程
7.3.3 输入字符串服务例程
7.3.4 输出字符串服务例程
7.3.5 寄存器的保存/恢复
7.4 C语言中的I/O
7.4.1 示例:一个输入缓冲的例子
7.4.2 I/O流
7.4.3 getchar的底层实现
习题
第8章 C函数的底层实现
8.1 内存和寄存器的分配
8.1.1 内存分配
8.1.2 寄存器分配
8.1.3 静态数据区
8.1.4 运行时栈
8.2 函数调用过程
8.2.1 栈帧
8.2.2 函数调用约定
8.2.3 寄存器的保存/恢复
8.3 递归与循环
8.3.1 运行时间
8.3.2 栈溢出
习题
第9章 C指针和数组的底层实现
9.1 指针和数组的内存分配
9.1.1 指针运算符的底层实现
9.1.2 数组的底层实现
9.1.3 数组和指针的关系
9.2 参数传递:指针作参数
9.2.1 示例1:一个错误的Swap函数
9.2.2 示例2:使用指针的Swap函数
9.2.3 示例3:一个错误使用指针的函数
9.3 参数传递:数组名作参数
9.3.1 示例1:BubbleSort函数在底层的实现
9.3.2 示例2:StrCmp函数在底层的实现
9.3.3 printf函数的参数传递
9.3.4 scanf函数的参数传递
9.4 编译过程
9.4.1 完整的编译过程
9.4.2 示例:HelloWorld.c的编译过程
习题
第10章 从RISC-V到×86
10.1 x86指令集简介
10.1.1 寄存器
10.1.2 指令格式
10.1.3 常用指令
10.2 从C到×86
10.2.1 函数调用约定
10.2.2 示例1:Swap函数在x86上的实现
10.2.3 示例2:BubbleSort函数在x86上的实现
10.2.4 示例3:编译器与++/--运算符
习题
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
