《计算机系统基础(五):x86模拟器编程实践》这门课程的内容,是使用C语言,编程构建一个简化,但是全功能的i386模拟器。通过编程实践,深入理解并掌握计算机系统基础相关的知识。在进行本课程的学习前,需要大家在理论知识和编程技能方面,具有一定的基础。在理论知识方面,需要大家首先掌握《计算机系统基础》这门课程的理论内容。PA的每一个阶段,和理论课的各个章节之间都有对应关系,我们会随着课程的开展,介绍这种对应关系。同学们可以一边上理论课,一边开展相应阶段的PA实践。通过本课程的学习,书本上的理论知识不再是抽象的概念和文字,而是自己亲手实现的模拟计算机中的各个功能部件。在实践中,完成对计算机系统基础这门课程相关知识的深入理解。建立宏观的计算机系统知识框架,为将来计算机组成原理、操作系统等后续课程的学习打下坚实的基础。通过对程序执行过程的模拟,我们用高级语言编写的程序在计算机上的执行过程不再是一个对程序员透明的黑盒或灰盒。我们能够清楚地理解构成程序的每一条指令在计算机中的执行过程,从计算机系统层面,深入了解程序运行的内在机理。当然,作为一个小规模的软件项目,同学们也能够在编程实践的过程中充分锻炼自己的C语言编程和调试能力。如果可以的话,也请大家为我们这个课程项目积极贡献代码和缺陷报告,共同推进课程的发展。
实现nemu模拟器以及kernel中的相关功能
掌握计算机系统基础相关重要知识点
C语言程序设计基础
数据结构
计算机系统基础理论知识
袁春风, 余子濠. 计算机系统基础(第2版). 机械工业出版社
Guide的仓库及其镜像地址:
实验框架代码及其镜像地址:
https://css.csail.mit.edu/6.858/2014/readings/i386.pdf
x86及x87指令集(包含手册上没有的指令)
https://www.felixcloutier.com/x86/
Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic Architecture
https://software.intel.com/en-us/articles/intel-sdm