- Level Foundation
- Course by Nanjing University
-
Offered by
About
本课程主要介绍高级语言程序中的数据类型及其运算、语句和过程调用等是如何在计算机系统中实现的。主要包含三个主题:(1)表示。不同数据类型(如带符号整数、无符号整数、浮点数、数组、结构等)数据在寄存器或存储器中的表示和存储;指令的格式、编码及其在存储器中的存储;存储地址(指针)的表示。(2)转换。高级语言程序中的过程(函数调用)、循环、选择等语句与机器级代码之间的对应关系。(3)链接。多个可重定位目标文件如何链接生成可执行目标文件并加载到系统中。 通过本课程的学习,使学习者能从程序员角度认识计算机系统,能够建立高级语言程序、ISA、OS、编译器、链接器等之间的相互关联,对指令在硬件上的执行过程和指令的底层硬件执行机制有一定的认识和理解,从而增强在程序调试、性能提升、程序移植和健壮性等方面的能力,并为后续的“计算机组成与设计”、“操作系统”、“编译原理”、“计算机体系结构”等课程打下坚实基础。 学完本课程后,学习者将对以下问题有比较深刻的认识,并能解决相关实际问题。 ----程序中处理的数据在机器中如何表示和运算? ----程序中各类控制语句对应的机器级代码结构是怎样的? ----多个程序模块是如何链接起来形成可执行目标文件的? ----机器级代码及构成机器级代码的指令是如何在机器上执行的?Modules
第一周 计算机系统概述
1
Assignment
- 第1周 计算机系统概述
1
Peer Review
- 第1周 计算机系统概述
8
Videos
- W1-1 C语言程序举例
- W1-2-1 冯•诺依曼结构主要思想
- W1-2-2 现代计算机结构模型及工作原理
- W1-3-1 从机器语言到高级编程语言
- W1-3-2 程序的开发和执行及其支撑环境
- W1-4-1 编程语言和计算机系统层次
- W1-4-2 现代计算机系统的层次结构
- W1-5 本课程的主要学习内容
第二周 数据的表示和存储
1
Assignment
- 第2周 数据的表示和存储
1
Peer Review
- 第2周 数据的表示和存储
13
Videos
- W2-1-1 10进制数和2进制数
- W2-1-2 2,8,10,16进制数之间的转换
- W2-2-1 原码和移码表示
- W2-2-2 模运算系统和补码表示
- W2-2-3 补码和真值的对应关系
- W2-3-1 无符号整数和带符号整数
- W2-3-2 C语言程序中整数举例
- W2-4-1 浮点数的表示范围
- W2-4-2 IEEE 754中规格化数的表示
- W2-4-3 IEEE 754中特殊数的表示
- W2-5 非数值数据的编码表示
- W2-6 数据宽度和存储容量的单位
- W2-7 数据存储时的字节排列
第三周 运算电路基础
1
Assignment
- 第3周 运算电路基础
1
Peer Review
- 第3周 运算电路基础
7
Videos
- W3-1-1 布尔代数和基本逻辑电路
- W3-1-2 无符号数加法器
- W3-1-3 整数加, 减运算器和ALU
- W3-2 从C表达式到逻辑电路
- W3-3 C语言中的各类运算
- W3-4-1 加减运算生成的标志信息
- W3-4-2 加减运算溢出公式及举例
第四周 乘除运算及浮点数运算
1
Assignment
- 第4周 乘除运算及浮点数运算
1
Peer Review
- 第4周 乘除运算及浮点数运算
5
Videos
- W4-1 整数乘法运算
- W4-2 整数除法运算
- W4-3-1 浮点加减运算
- W4-3-2 浮点运算的精度
- W4-3-3 浮点运算精度举例
第五周 IA-32指令系统概述
1
Assignment
- 第5周 IA-32指令系统概述
1
Peer Review
- 第5周 IA-32指令系统概述
7
Videos
- W5-1-1 程序和指令的关系
- W5-1-2 目标代码和ISA
- W5-2-1 Intel处理器概述
- W5-2-2 IA-32的寄存器组织
- W5-2-3 IA-32的寻址方式
- W5-2-4 高级语言程序中寻址举例
- W5-2-5 IA-32机器指令格式
第六周 IA-32指令类型
1
Assignment
- 第6周 IA-32指令类型
1
Peer Review
- 第6周 IA-32指令类型
12
Videos
- W6-1-1 常用传送指令
- W6-1-2 传送指令执行过程
- W6-2-1 常用定点运算指令
- W6-2-2 加法运算的底层实现举例
- W6-2-3 加法指令和乘法指令举例
- W6-3-1 逻辑运算和移位指令
- W6-3-2 按位运算指令举例
- W6-4-1 条件转移指令举例
- W6-4-2 条件设置指令举例
- W6-5-1 x87 FPU常用指令
- W6-5-2 x87浮点处理指令举例
- W6-6 MMX及SSE指令集
第七周 C语言语句的机器级表示
1
Assignment
- 第7周 C语言语句的机器级表示
1
Peer Review
- 第7周 C语言语句的机器级表示
8
Videos
- W7-1-1 过程调用概述
- W7-1-2 过程(函数)的机器级代码结构
- W7-1-3 过程调用的参数传递
- W7-1-4 过程调用举例
- W7-1-5 递归过程调用举例
- W7-1-6 过程调用举例
- W7-2 选择结构的机器级表示
- W7-3 循环结构的机器级表示
第八周 复杂数据类型的机器级表示
1
Assignment
- 第8周 复杂数据类型的机器级表示
1
Peer Review
- 第8周 复杂数据类型的机器级表示
8
Videos
- W8-1-1 数组的分配与访问
- W8-1-2 数组与指针的关系
- W8-1-3 指针数组和多维数组
- W8-2-1 结构类型的分配和访问
- W8-2-2 联合类型的分配和访问
- W8-3-1 数据的对齐方式
- W8-3-2 数据对齐方式举例
- W8-4 越界访问和缓冲区溢出攻击
第九周 x86-64指令系统
1
Assignment
- 第9周 x86-64指令系统
1
Peer Review
- 第9周 x86-64指令系统
8
Videos
- W9-1-1 x86-64指令系统概述1
- W9-1-2 x86-64指令系统概述2
- W9-2-1传送指令
- W9-2-2 算术逻辑运算指令
- W9-2-3 x86-64逆向工程举例
- W9-3-1 x86-64过程调用的参数传递方式
- W9-3-2 x86-64过程调用举例
- W9-3-3 IA-32和x86-64的比较举例
第十周 链接概述与目标文件格式
1
Assignment
- 第10周 链接概述和目标文件格式
1
Peer Review
- 第10周 链接概述和目标文件格式
8
Videos
- W10-1-1 可执行文件生成过程概述
- W10-1-2 链接器的由来
- W10-2-1 链接过程的本质
- W10-2-2 目标文件的两种视图
- W10-3-1 可重定位文件概述
- W10-3-2 ELF头和节头表
- W10-4-1 可执行文件概述
- W10-4-2 程序头表和存储器映像
第十一周 符号及符号解析
1
Assignment
- 第11周 符号及符号解析
1
Peer Review
- 第11周 符号及符号解析
6
Videos
- W11-1-1 符号和符号表的基本概念
- W11-1-2 全局符号的强弱特性
- W11-1-3 多重符号定义举例
- W11-2-1 静态共享库的创建
- W11-2-2 符号解析过程
- W11-2-3 链接顺序问题
第十二周 重定位和动态链接
1
Assignment
- 第12周 重定位及动态链接
1
Peer Review
- 第12周 重定位及动态链接
8
Videos
- W12-1-1 重定位的基本概念
- W12-1-2 PC相对地址重定位
- W12-1-3 绝对地址重定位
- W12-1-4 符号重定位举例
- W12-2 可执行文件的加载
- W12-3-1 共享库和动态链接概述
- W12-3-2 模块内引用和模块间数据引用
- W12-3-3 模块间的调用或跳转
期末考试
1
Assignment
- 期末考试试题

袁春风