hi,小慕
课程

中国大学MOOC,为你提供一流的大学教育

hi,小mooc
计算机系统基础(一):程序的表示、转换与链接
第17次开课
开课时间: 2025年03月10日 ~ 2025年07月07日
学时安排: 3-5小时每周
进行至第3周,共18周 已有 591 人参加
认证学习
认证成绩和证书
智能问答和解析
视频学习辅助
立即参加
课程详情
课程评价(360)
spContent=主要介绍高级语言程序中的数据运算、语句和过程调用等如何在计算机系统中实现,包含:(1)数据、指针、指令等的表示和存储;(2)高级语言程序中语句与机器级代码间的对应关系;(3)静态链接和动态链接。
主要介绍高级语言程序中的数据运算、语句和过程调用等如何在计算机系统中实现,包含:(1)数据、指针、指令等的表示和存储;(2)高级语言程序中语句与机器级代码间的对应关系;(3)静态链接和动态链接。
—— 课程团队
课程概述

  本课程是“计算机系统基础”系列课程中的第一门,主要介绍高级语言程序中的数据类型及其运算、语句和过程调用等是如何在计算机系统中实现的。主要包含三个主题:(1)表示。不同数据类型(如带符号整数、无符号整数、浮点数、数组、结构等)数据在寄存器或存储器中的表示和存储;指令的格式、编码及其在存储器中的存储;存储地址(指针)的表示。(2)转换。高级语言程序中的过程(函数调用)、循环、选择等语句与机器级代码之间的对应关系。(3)链接。多个可重定位目标文件如何链接生成可执行目标文件并加载到系统中。

通过本课程的学习,使学习者能从程序员角度认识计算机系统,能够建立高级语言程序、ISAOS、编译器、链接器等之间的相互关联,对指令在硬件上的执行过程和指令的底层硬件执行机制有一定的认识和理解,从而增强在程序调试、性能提升、程序移植和健壮性等方面的能力,并为后续的计算机组成与设计操作系统编译原理计算机体系结构等课程打下坚实基础。

学完本课程后,学习者将对以下问题有比较深刻的认识,并能解决相关实际问题。

  • 程序中处理的数据在机器中如何表示和运算?
  • 程序中各类控制语句对应的机器级代码结构是怎样的?
  • 多个程序模块是如何链接起来形成可执行目标文件的?
  • 机器级代码及构成机器级代码的指令是如何在机器上执行的?

 

授课目标

通过本课程的学习,使学习者能从程序员角度认识计算机系统,能够建立高级语言程序、ISAOS、编译器、链接器等之间的相互关联,对指令在硬件上的执行过程和指令的底层硬件执行机制有一定的认识和理解,从而增强在程序调试、性能提升、程序移植和健壮性等方面的能力,并为后续的计算机组成与设计操作系统编译原理计算机体系结构等课程打下坚实基础。

课程大纲

第一周 计算机系统概述

第1讲 为什么要学习计算机系统基础

第2讲 计算机系统基本组成与基本功能

第3讲 程序开发和执行过程简介

第4讲 计算机系统层次结构

第5讲 本课程的主要学习内容

第一周小测验

第二周 数据的表示和存储

第1讲 数制和编码

第2讲 定点数的编码表示

第3讲 C语言中的整数

第4讲 浮点数的编码表示

第5讲 非数值数据的编码表示

第6讲 数据宽度和存储容量的单位

第7讲 数据存储时的字节排列

第二周小测验

第三周 运算电路基础

第1讲 数字逻辑电路基础

第2讲 从C表达式到逻辑电路

第3讲 C语言中的各类运算

第4讲 整数加减运算

第三周小测验

第四周 乘除运算及浮点数运算

第1讲 整数乘法运算

第2讲 整数除法运算

第3讲 浮点数运算

第四周小测验

第五周 IA-32指令系统概述

第1讲 程序转换概述

第2讲 IA-32指令系统概述

第五周小测验

第六周 IA-32指令类型

第1讲 传送指令

第2讲 定点算术运算指令

第3讲 按位运算指令

第4讲 控制转移指令

第5讲 x87浮点处理指令

第6讲 MMX及SSE指令集

第六周小测验

第七周 C语言语句的机器级表示

第1讲 过程(函数)调用的机器级表示

第2讲 选择和循环语句的机器级表示

第七周小测验

第八周 复杂数据类型的机器级表示

第1讲 数组和指针类型的分配和访问

第2讲 结构和联合数据类型的分配和访问

第3讲 数据的对齐存放

第4讲 越界访问和缓冲区溢出攻击

第八周小测验

第九周 x86-64指令系统

第1讲 x86-64指令系统概述

第2讲 x86-64的基本指令

第3讲 x86-64的过程调用

第九周小测验

第十周 链接概述和目标文件格式

第1讲 可执行文件生成概述

第2讲 目标文件格式概述

第3讲 ELF可重定位目标文件

第4讲 ELF可执行目标文件

第十周小测验

第十一周 符号及符号解析

第1讲 符号及符号表

第2讲 静态链接和符号解析

第十一周小测验

第十二周 重定位及动态链接

第1讲 符号的重定位

第2讲 可执行文件的加载

第3讲 共享库和动态链接

第十二周小测验

展开全部
预备知识

高级语言程序设计(最好有C语言程序设计的基础)

 

参考资料

1.袁春风. 计算机系统基础(第2版) [M]. 北京:机械工业出版社,2018 (前4章)

2.Randal E. Bryant, David R. O'Hallaron. 深入理解计算机系统(原书第3版)[M]. 龚奕利,雷迎春译北京:机械工业出版社,2016

 

常见问题

1.学习“计算机系统基础”系列课程时,最重要的学习方法是什么?

首先,不要死记硬背,关键是要不断将所学内容关联起来,以真正理解所学内容。

其次,要多动手实践。不明白的地方就编写一个程序,通过打印结果或利用gdb等调试工具查看机器级代码来分析。

此外,多提问和多参与讨论。真理越辩越明,在与他人的讨论过程中,往往会忽然开朗,有时,一个问题自己冥思苦想几天都想不明白,但实际上课程讨论区早就有人讨论过了,或者在讨论区一提问,马上就有人帮你解决了。

 

2.该系列课程属于硬件课程还是软件课程?

该系列课程涉及到其他很多课程,包括硬件课程和软件课程。它与高级语言程序设计、组成原理、汇编、编译、链接和操作系统等课程的内容有关。虽然涉及到很多其他课程的内容,但是,我们在本课程中只会讲解这些课程内容之间的关联,而不会讲解这些课程的细节内容,例如,本课程不会讲解如何实现编译器和如何实现操作系统。

 

3.《计算机系统基础》系列一共包含几门慕课?

包含以下三门已经上线的理论课程和另外两门将要上线的实践类课程。

1)计算机系统基础(一):程序的表示、转换与链接。

2)计算机系统基础(二):程序的执行和存储访问。

3)计算机系统基础(三):异常、中断和输入/输出。 

  ( 4 )计算机系统基础(四):编程与调试实践。

  (5)计算机系统基础(五):x86模拟器 编程实践。

南京大学
1 位授课老师
袁春风

袁春风

计算机科学与技术系教授

推荐课程

【DeepSeek适用】小白玩转AI大模型应用开发

林粒粒

187人参加

小白玩转 Python 数据分析

林粒粒

75人参加
下载
下载

下载App