计算机系统基础一课程概述
主要介绍高级语言程序中的数据运算、语句和过程调用等如何在计算机系统中实现,包含:(1)数据、指针、指令等的表示和存储;(2)高级语言程序中语句与机器级代码间的对应关系;(3)静态链接和动态链接。 —— 课程团队
课程概述
本课程是“计算机系统基础”系列课程中的第一门,主要介绍高级语言程序中的数据类型及其运算、语句和过程调用等是如何在计算机系统中实现的。主要包含三个主题:(1)表示。不同数据类型(如带符号整数、无符号整数、浮点数、数组、结构等)数据在寄存器或存储器中的表示和存储;指令的格式、编码及其在存储器中的存储;存储地址(指针)的表示。(2)转换。高级语言程序中的过程(函数调用)、循环、选择等语句与机器级代码之间的对应关系。(3)链接。多个可重定位目标文件如何链接生成可执行目标文件并加载到系统中。
通过本课程的学习,使学习者能从程序员角度认识计算机系统,能够建立高级语言程序、ISA、OS、编译器、链接器等之间的相互关联,对指令在硬件上的执行过程和指令的底层硬件执行机制有一定的认识和理解,从而增强在程序调试、性能提升、程序移植和健壮性等方面的能力,并为后续的“计算机组成与设计”、“操作系统”、“编译原理”、“计算机体系结构”等课程打下坚实基础。
学完本课程后,学习者将对以下问题有比较深刻的认识,并能解决相关实际问题。
程序中处理的数据在机器中如何表示和运算?
程序中各类控制语句对应的机器级代码结构是怎样的?
多个程序模块是如何链接起来形成可执行目标文件的?
机器级代码及构成机器级代码的指令是如何在机器上执行的?
授课目标
通过本课程的学习,使学习者能从程序员角度认识计算机系统,能够建立高级语言程序、ISA、OS、编译器、链接器等之间的相互关联,对指令在硬件上的执行过程和指令的底层硬件执行机制有一定的认识和理解,从而增强在程序调试、性能提升、程序移植和健壮性等方面的能力,并为后续的“计算机组成与设计”、“操作系统”、“编译原理”、“计算机体系结构”等课程打下坚实基础。
课程大纲
第一周 计算机系统概述
第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语言程序设计的基础)