计算机系统基础:C语言视角(RISC-V 版)

深入理解计算机系统,使用RISC-V快速上手,提供丰富配套资源
分享 推荐 1 收藏 24 阅读 2.7K
王浩然 (作者) 978-7-115-56511-2

关于本书的内容有任何问题,请联系 刘博

1. 在中国大学慕课上有配套视频,学习人数超过2万人。
2. 通过课程,你可以学会使用C语言编程;同时,你还可以知晓C程序的执行奥秘。
3. 对于国内开设计算机系统能力培养的高校,是非常适合的入门级教材。
4. 采用目前开源的,商业化非常好的RISC-V作为计算机实例。

内容摘要

本书是一本向读者介绍计算机系统的教材。通过建立对计算机的系统级认识,从而理解一个C语言程序是如何在计算机中执行出来的。
本书包括三个部分:第一部分(第1章到第3章)介绍了计算机的基本工作原理,包括冯·诺依曼模型,计算机系统的抽象分层,数据在计算机中的表示和数字逻辑电路。第二部分(第4章到第7章)介绍了RISC-V计算机,包括RISC-V的基础整数指令集RV321,一个基本的RISC-V处理器,RISC-V计算机的机器放言和汇编语言,子例程/子程序机制,以及一个简单的输出与输出。第三部分(第8章到第10章)介绍了C语言程序在计算机是如何执行出来的,包括C函数在RISC-V计算中的实现,指针和数组在RISC-V计算机中的实现,以及C函数、指针和数组在X86指令系统下的实现。
本书适合计算机类专业的初学者学习,读者仅需要具备C语言程序设计基础即可。本书可作为高等院校的教材,也可作为从事计算机软件开发与应用的工程人员参考书。

目录

第1章 计算机系统概述 1
1.1 计算机与计算机系统 1
1.1.1 通用电子数字计算机 1
1.1.2 计算机系统 2
1.2 冯?诺依曼模型 3
1.2.1 存储器 3
1.2.2 处理单元 3
1.2.3 控制单元 4
1.2.4 I/O设备 4
1.3 计算机系统的抽象分层 4
1.3.1 程序 5
1.3.2 语言处理 6
1.3.3 操作系统 6
1.3.4 指令集结构 7
1.3.5 微处理器 7
1.3.6 逻辑电路 8
1.3.7 电子元件 8
习题 8
第2章 数据的机器级表示 9
2.1 位和数据类型 9
2.1.1 信息的最小单位—位 9
2.1.2 数据类型 10
2.2 整数 10
2.2.1 无符号整数 10
2.2.2 有符号整数 10
2.2.3 二进制补码整数 12
2.2.4 二进制—十进制转换 13
2.2.5 算术运算 15
2.3 浮点数 17
2.4 十六进制表示法 20
2.5 ASCII 21
2.6 C语言中的数据类型与二进制表示 23
2.6.1 C语言中的数据类型 23
2.6.2 数据类型转换 24
2.6.3 输入和输出的格式说明符 25
2.6.4 十六进制字面常量 26
习题 27
第3章 数字逻辑电路 29
3.1 二进制逻辑运算 29
3.1.1 与函数 29
3.1.2 或函数 30
3.1.3 非函数 31
3.1.4 异或函数 31
3.1.5 C语言的按位运算符 32
3.2 晶体管 33
3.3 门电路 34
3.3.1 非门 34
3.3.2 或非门、或门 35
3.3.3 与门、与非门 36
3.4 组合逻辑电路 37
3.4.1 译码器 38
3.4.2 多路选择器 38
3.4.3 全加法器 39
3.4.4 逻辑完备性 40
3.5 基本存储元件 41
3.5.1 SR锁存器 41
3.5.2 门控D锁存器 42
3.5.3 寄存器 43
3.6 时序逻辑电路 43
3.6.1 有限状态机 44
3.6.2 示例:交通信号灯控制器 45
3.7 存储器 48
3.7.1 地址空间 49
3.7.2 寻址能力 49
3.7.3 一个4×2的存储器 49
习题 51
第4章 指令集结构 55
4.1 RISC-V指令集结构 55
4.1.1 内存 55
4.1.2 寄存器 56
4.1.3 CISC和RISC 57
4.1.4 指令格式 57
4.2 RV32I指令 58
4.2.1 整数运算指令 59
4.2.2 数据传送指令 65
4.2.3 示例:指令序列 66
4.2.4 条件分支指令 68
4.2.5 无条件跳转指令 69
4.2.6 示例:计算一列数之和 70
4.3 RISC-V处理器 71
4.3.1 数据通路 72
4.3.2 控制器 75
习题 78
第5章 机器语言与汇编语言 81
5.1 机器语言程序设计 81
5.1.1 结构化程序设计和控制指令 81
5.1.2 机器语言程序示例 82
5.2 汇编语言程序设计 85
5.2.1 RISC-V汇编语言程序 85
5.2.2 汇编语言指令 86
5.2.3 汇编命令 89
5.2.4 伪指令 90
5.3 汇编过程 91
5.3.1 两趟扫描 91
5.3.2 第一趟:构建符号表 92
5.3.3 第二趟:生成机器语言程序 92
5.4 从C程序到RISC-V 94
5.4.1 从C程序到RISC-V示例 94
5.4.2 switch语句的底层实现 96
5.4.3 GNU工具链 97
习题 98
第6章 子例程 103
6.1 调用/返回机制 103
6.1.1 jal/jalr指令 104
6.1.2 示例:乘法运算 105
6.2 子例程示例 107
6.2.1 除法运算 107
6.2.2 字符串逆序 108
6.2.3 数据类型转换 109
6.2.4 寄存器的保存/恢复 113
6.3 递归子例程 113
6.3.1 示例:一个错误的Sn子例程 113
6.3.2 栈—一种抽象数据类型 117
6.3.3 示例:采用栈机制的Sn子例程 119
习题 122
第7章 输入和输出 126
7.1 自陷机制 126
7.1.1 系统调用 126
7.1.2 ecall/mret/csrrw指令 126
7.1.3 操作系统自陷处理例程 129
7.2 一个简单的I/O设计 130
7.2.1 总线结构 130
7.2.2 I/O设备寄存器 131
7.2.3 内存映射I/O 131
7.2.4 异步与同步 132
7.2.5 轮询 133
7.3 操作系统服务例程 135
7.3.1 输入字符服务例程 135
7.3.2 输出字符服务例程 135
7.3.3 输入字符串服务例程 136
7.3.4 输出字符串服务例程 138
7.3.5 寄存器的保存/恢复 139
7.4 C语言中的I/O 139
7.4.1 示例:一个输入缓冲的例子 139
7.4.2 I/O流 140
7.4.3 getchar的底层实现 140
习题 142
第8章 C函数的底层实现 145
8.1 内存和寄存器的分配 145
8.1.1 内存分配 145
8.1.2 寄存器分配 146
8.1.3 静态数据区 147
8.1.4 运行时栈 147
8.2 函数调用过程 148
8.2.1 栈帧 148
8.2.2 函数调用约定 151
8.2.3 寄存器的保存/恢复 155
8.3 递归与循环 156
8.3.1 运行时间 156
8.3.2 栈溢出 157
习题 157
第9章 C指针和数组的底层实现 161
9.1 指针和数组的内存分配 161
9.1.1 指针运算符的底层实现 161
9.1.2 数组的底层实现 162
9.1.3 数组和指针的关系 163
9.2 参数传递:指针作参数 164
9.2.1 示例1:一个错误的Swap函数 164
9.2.2 示例2:使用指针的Swap函数 165
9.2.3 示例3:一个错误使用指针的函数 167
9.3 参数传递:数组名作参数 168
9.3.1 示例1:BubbleSort函数在底层的实现 168
9.3.2 示例2:StrCmp函数在底层的实现 171
9.3.3 printf函数的参数传递 172
9.3.4 scanf函数的参数传递 173
9.4 编译过程 174
9.4.1 完整的编译过程 175
9.4.2 示例:HelloWorld.c的编译过程 176
习题 179
第10章 从RISC-V到x86 182
10.1 x86指令集简介 182
10.1.1 寄存器 182
10.1.2 指令格式 182
10.1.3 常用指令 183
10.2 从C到x86 185
10.2.1 函数调用约定 185
10.2.2 示例1:Swap函数在x86上的实现 186
10.2.3 示例2:BubbleSort函数在x86上的实现 188
10.2.4 示例3:编译器与++运算符 191
习题 193
参考文献 196

读者评论

赶紧抢沙发哦!

我要评论

作者介绍

王浩然 原南京大学软件学院教师,前软件学院副院长。
一、近五年讲授的主要课程 1、计算系统基础 专业基础课,每周4学时,每学年1届,近5年累计970人;面向软件学院本科学生; 2、管理信息系统 专业课,每周3学时,每学年1届,近5年累计536人;面向软件学院本科学生; 3、J2EE与中间件技术 专业基础课,每周3学时,每学年1届,近5年累计490人;面向软件学院本科学生、研究生。
二、近五年承担的实践性教学 1、计算系统基础实验:5年累计970人; 2、程序设计实践:2年累计136人; 3、指导本科毕业设计/论文:5年累计86人;   4、指导工程硕士毕业论文:4年累计20篇。
三、近五年主持的教学研究课题   1、参加2005年江苏省高等教育教改重点项目《应用型软件人才培养体系的研究与实践》;   2、参加建设教育部2007年度第一批高等学校特色专业——南京大学软件工程专业建设点项目。   3、参加《计算系统基础》(高等教育出版社)教材出版计划。
四、近五年作为第一署名人在国内外主要刊物上发表的教学相关论文   1. 软件工程专业程序设计类课程的设计,吉林大学学报,2005.8,骆斌,王浩然;   2. 软件工程专业核心课程的设计,全国高校软件工程专业教育年会(2007),王浩然,丁二玉,张瑾玉。
五、获得的教学表彰/奖励   1、获得2006年“IBM奖教金”,国家留学基金委与IBM大学合作项目;   2、 软件工程专业建设,2007年南京大学教学成果一等奖,骆斌、赵志宏、王浩然等;   3、参加“软件工程专业工程化实践教学体系的构建与实施”的组织和研讨,该项目获得2005国家级教学成果二等奖,2004年江苏省高等教育省级教学成果奖一等奖,南京大学教学成果特等奖。 5 ※<学术研究> 一、近五年来承担的学术研究课题   2004年3月至2004年7月,主持《法院综合信息系统》审判质量测评子系统,课题来源为江苏省高级法院。 二、近五年在国内外主要刊物上以第1署名人发表的学术论文   1、一种基于XML的数据集成系统框架及其应用,计算机工程与应用,2005.9,赵毅、王浩然、庄冠华、骆斌,2/4;   2、基于区域分解法的地下水有限元并行数值模拟,南京大学学报,41(3),2005,王浩然等,1/4。

推荐用户

购买本书用户

相关图书

  • 数据库原理(微课版)

    郭玉彬 宋歌 边山

    本书依据教育部《普通高等学校本科专业类教学质量国家标准》,以新工科背景下加快培养计算机类工程人才为目标,构建了...

    ¥69.80
  • 数据结构(C语言版)(第3版)

    李冬梅 严蔚敏

    本书在选材与编排上,贴近当前普通高等院校“数据结构”课程的现状和发展趋势,符合最新研究生考试大纲,内容难度适度...

    ¥59.80
  • 大学计算机导论

    甘勇

    “计算机科学导论”作为计算机科学与技术专业的必修课,旨在引导刚刚进入大学的新生对计算机基础知识及研究方向有一个...

    ¥59.80
  • 鲲鹏智能计算导论

    华为技术有限公司 林新华 郑骏 陈瑛 夏林中 马祥 陈炯

    本书以鲲鹏智能计算为主线,共12 章,分别为绪论、计算机与服务器、鲲鹏通用计算平台、鲲鹏openEuler操作...

    ¥59.80
  • AIGC基础与应用

    黄源 张莉

    本书深入浅出地讲解AIGC基础知识与实际应用。全书共8章,包括认识AIGC、AIGC的使用方式、AIGC助力高...

    ¥49.80
人邮微信
本地服务
人邮微信
教师服务
二维码
读者服务
读者服务
返回顶部
返回顶部