Neptune
Neptune是浙江大学计算机组成课作业,是一个UC Berkly课程中的venus的迷你版本,支持汇编与模拟执行指令,repo将在本学期结束时公开。
1 设计说明
目前的总体架构包括汇编器与模拟器。其中汇编器支持2进制,16进制输出。同时模拟器支持单步执行,断点设置,查看寄存器与内存。
汇编器的主要难点是,跳转指令。而这个可以通过两次扫描实现,第一遍扫描建立symbol tabel符号表,第二遍扫描替换文本中的符号以及伪指令。
在模拟器内存的设计上,分为Data Memory和Instruction Memory,但实际上在真实计算机中应该为1块内存。为了验证程序的正确性,保证结果的汇编结果与venus的汇编结果保持一致,指令的起始地址采用0x00000000,而数据的起始地址为0x10000000,栈指针的起始地点为0x10010000。采用两块内存而不直接使用一块的原因,一是方便与venus的计算结果同步,同时,减少应用程序的内存占用。
2 结果验证
3 结尾
这项工程是一份时间比较紧的课程作业,总体而言较为满意。但仍然缺乏了许多功能,同时对于许多UserCase考虑不全,如果之后还有机会将会继续完善这项工程。由于指令数量较多,覆盖测试可能存在疏漏。