不要因为现实的平凡,就否定了那华丽的梦想!

3.1 南京大学-计算机系统基础(一):程序的表示、转换与链接

课程名称

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

课程概要
《南京大学-计算机系统基础(一):程序的表示、转换与链接》是计算机系统基础系列课程中的第一门,主要探讨高级语言程序如何在计算机系统中实现。课程包括三个核心主题:数据表示、程序转换与机器级代码的生成,以及多个可重定位目标文件的链接。首先,课程讲解了不同数据类型(如整数、浮点数、数组、结构体等)在计算机寄存器或内存中的存储方式,指令的格式和编码,以及存储地址的表示;其次,深入分析了高级语言中的函数调用、循环和选择等语句如何转换为机器代码;最后,探讨了如何将多个程序模块链接成可执行文件并加载到系统中。

​ 通过学习该课程,学生将掌握如何从程序员角度理解计算机系统,深入理解程序与硬件之间的关系,为后续的操作系统、编译原理等课程打下坚实基础。课程的学习有助于提高程序调试、性能优化、移植性和程序健壮性等方面的能力。
| 推荐系数 |

⭐⭐⭐

| 先修 |

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

语音字幕
中文
英文

课程大纲
1. C语言程序的编译(22分钟)
2. 为什么要学习计算机系统基础(6分钟)
3. 编译与运行的环境(10分钟)
4. 和现代计算机系统的联系(19分钟)
5. 从操作系统到硬件及其运行环境(16分钟)
6. 程序的基本执行框架及其实现环境(16分钟)
7. 知识代谢循环和计算思维的核心(20分钟)
8. 知识代谢循环系统的运作原理(14分钟)
9. 不定课程推荐内容(16分钟)
10. 10进制的进位制(16分钟)
11. 28101定制编译课程(20分钟)
12. 原码和符号表示(10分钟)
13. 能被实现的补码表示(22分钟)
14. 补码和其对数表示关系(15分钟)
15. 无符号数的表示(15分钟)
16. C语言程序的范围(16分钟)
17. 系统函数的范围(15分钟)
18. 符号表的范围(17分钟)
19. ELF 754标准浮点数概述(15分钟)
20. ELF 754标准的标准浮点数实现(15分钟)
21. 数据范围的基本数据表示(19分钟)
22. 数据表示的符号实例(19分钟)
23. 无符号数的表示举例(16分钟)
24. 无符号数的运算(15分钟)
25. 符号位与新的ALU(12分钟)
26. JC表达式实现细节(10分钟)
27. C语言程序的类型定义(25分钟)
28. 加减乘法在类型中的位置(25分钟)
29. 加减乘法的实现公式及原理(17分钟)
30. 实际类型的分类和原则(14分钟)
31. 浮点运算的特点实例(22分钟)
32. 浮点运算的特点实例2(22分钟)
33. 类型扩展和转换的关系(15分钟)
34. 符号代码和ISA(15分钟)
35. 符号代码和ISA细节(15分钟)
36. 二进制代码的分布实例(16分钟)
37. Intel处理器实现(15分钟)
38. IA-32的寄存器概览(10分钟)
39. IA-32的寄存器的方式(9分钟)
40. 高级语言程序的基本实现(9分钟)
41. IA-32计算机架构基础(10分钟)
42. 常用定点运算(15分钟)
43. 栈结构执行过程(9分钟)
44. 常用定点运算的指令(9分钟)
45. 加法运算的基本逻辑(10分钟)
46. 加法运算在寄存器中的实现方式(10分钟)
47. 过程调用模型(11分钟)
48. 整数类型的寄存器分布与调用(18分钟)
49. 条件转移的类型与模式(15分钟)
50. 条件转移的基本实现(15分钟)
51. x87 FPU常用指令(11分钟)
52. x87寄存器的实现方式(15分钟)
53. MMX与SSE寄存器(14分钟)
54. 常用浮点运算指令(11分钟)
55. 浮点运算指令示例(14分钟)
56. 过程调用用的标准数据格式(11分钟)
57. 过程调用的标准基础逻辑(13分钟)
58. 过程调用的寄存器分布(11分钟)
59. 过程调用实例(11分钟)
60. 寄存器堆的模型(18分钟)
61. 寄存器模型的复杂实现(14分钟)
62. 数据的基本设计思路(10分钟)
63. 系统操作细节(15分钟)
64. 程序执行举例(19分钟)
65. 数据类型的计算实现(10分钟)
66. 数据类型的进制实现(13分钟)
67. 数据类型的模式设计(10分钟)
68. 数据模式的实现方法(14分钟)
69. 数据类型设计的额外实例(12分钟)
70. x86-64数据的标准设计(20分钟)
71. x86-64数据的寄存器设置(10分钟)
72. x86-64操作数的寄存器(10分钟)
73. x86-64进向工程举例(17分钟)
74. x86-64指令调用的标准传递方式(7分钟)
75. x86-64进向的用法举例(10分钟)
76. IA-32进向(15分钟)
77. 可执行文件生成过程概述(19分钟)
78. 模块数据的本质(17分钟)
79. 模块数据的符号(14分钟)
80. 目标文件的文件种类问题(16分钟)
81. 目标文件的符号(10分钟)
82. ELF头部的头表(26分钟)
83. 符号表和存储映像表(21分钟)
84. 符号符号表的基本概念(13分钟)
85. 全局符号的强弱特性(8分钟)
86. 多重符号定义举例(21分钟)
87. 静态共享库的创建(15分钟)
88. 符号解析过程(13分钟)
89. 链接顺序问题(10分钟)
90. 重定位的基本概念(12分钟)
91. PC相对地址重定位(20分钟)
92. 绝对地址重定位(11分钟)
93. 符号重定位举例(13分钟)
94. 可执行文件的加载(15分钟)
95. 共享库和动态链接概述(19分钟)
96. 模块内引用和模块间数据引用(20分钟)
97. 模块间的调用和跳转(19分钟)
98. 符号库使用的程序逻辑基础(15分钟)
学习指南