计算机系统基础(五):x86模拟器编程实践
计算机系统基础(五):x86模拟器编程实践
1000+ 人选课
更新日期:2025/05/09
开课平台爱课程(中国大学MOOC)
开课高校南京大学
开课教师汪亮袁春风
学科专业工学计算机类
开课时间2022/08/22 - 2022/12/31
课程周期19 周
开课状态已结课
每周学时-
课程简介

《计算机系统基础(五):x86模拟器编程实践》这门课程的内容,是使用C语言,编程构建一个简化,但是全功能的i386模拟器。通过编程实践,深入理解并掌握计算机系统基础相关的知识。在进行本课程的学习前,需要大家在理论知识和编程技能方面,具有一定的基础。在理论知识方面,需要大家首先掌握《计算机系统基础》这门课程的理论内容。PA的每一个阶段,和理论课的各个章节之间都有对应关系,我们会随着课程的开展,介绍这种对应关系。同学们可以一边上理论课,一边开展相应阶段的PA实践。通过本课程的学习,书本上的理论知识不再是抽象的概念和文字,而是自己亲手实现的模拟计算机中的各个功能部件。在实践中,完成对计算机系统基础这门课程相关知识的深入理解。建立宏观的计算机系统知识框架,为将来计算机组成原理、操作系统等后续课程的学习打下坚实的基础。通过对程序执行过程的模拟,我们用高级语言编写的程序在计算机上的执行过程不再是一个对程序员透明的黑盒或灰盒。我们能够清楚地理解构成程序的每一条指令在计算机中的执行过程,从计算机系统层面,深入了解程序运行的内在机理。当然,作为一个小规模的软件项目,同学们也能够在编程实践的过程中充分锻炼自己的C语言编程和调试能力。如果可以的话,也请大家为我们这个课程项目积极贡献代码和缺陷报告,共同推进课程的发展。

课程大纲
第一周 PA 0 引言
PA 0 引言
PA 0-1 简介和实验环境配置
PA 0-2 PA原理与总览
PA 0-3 编译执行NEMU的方法
第二周 PA 1 数据的表示和运算(一)
PA 1 引言
PA 1-1 通用寄存器的模拟
PA 1-2 ALU的模拟
第三周 PA 1 数据的表示和运算(二)
PA 1-3 (1) FPU的模拟_Float的基本运算
PA 1-3 (2) FPU的模拟_规格化和舍入
第四周 PA 2 程序的执行(一)
PA 2 引言
PA 2-1 (1) 指令的模拟_指令循环的模拟
PA 2-1 (2) 指令的模拟_指令的解码与解释执行
第五周 PA 2 程序的执行(二)
PA 2-1 (3) 指令的模拟_NEMU中实现对i386指令的模拟
PA 2-1 (4) 指令的模拟_框架代码中宏的运用
第六周 PA 2 程序的执行(三)
PA 2-2 (1) ELF可执行文件的装载
PA 2-2 (2) 在Kernel中实现ELF文件的装载
第七周 PA 3 层次结构存储器(一)
PA 3 引言
PA 3-1 Cache的模拟
第八周 PA 3 层次结构存储器(二)
PA 3-2 (1) 保护模式的基本原理
PA 3-2 (2) 保护模式的模拟实现
第九周 PA 3 层次结构存储器(三)
PA 3-3 (1) 分页机制的基本原理
PA 3-3 (2) 分页机制的模拟实现
第十周 PA 4 I/O与外设
PA 4 引言
PA 4-1 (1) 异常和中断的基本原理
PA 4-1 (2) 异常和中断的模拟实现
PA 4-2 外设与IO