计算机系统基础(一):程序的表示、转换与链接
分享
课程详情
课程评价
spContent=主要介绍高级语言程序中的数据运算、语句和过程调用等如何在计算机系统中实现,包含:(1)数据、指针、指令等的表示和存储;(2)高级语言程序中语句与机器级代码间的对应关系;(3)静态链接和动态链接。
—— 课程团队
课程概述

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

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

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

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

 

授课目标

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

课程大纲
预备知识

高级语言程序设计(最好有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模拟器 编程实践。