Yanyan's Wiki 软件工程研究入门 (2022)

PA2: 指令模拟

请阅读实验须知/提交方法实验指南

Soft deadline:

  • PA 2.1: 2020.10.11 (此为建议的不计分 deadline)
  • PA 2.2: 2020.10.25 (此为建议的不计分 deadline)
  • PA 2.3: 2020.11.8 23:59:59 (以此 deadline 计按时提交奖励分)

Deadline 看起来很长,是因为真的需要那么多时间做……天上一日,地上一年。yzh 的 40 小时不是你们的 40 小时。

ICS2020-PA2 提交结果

Online Judge 评测说明

评测过程与 PA1 类似。在这个实验中,我们会用 NEMU 模拟执行一段或简单或复杂的代码,使用 monitor 打印寄存器的数值,并据此判定实现的正确性。不用惊慌:如果你能在本地通过 Dummy,你就能通过至少一个 Easy 测试用例。

常见问题

  1. 你的 klib 需要在没有 libc 的环境上运行;因此任何 libc 的库函数都不能被调用 (甚至引用如 stdio.h 也可能发生问题)。如果你在其中加入了临时调试用的 printf 等,请你使用适当的预编译选项 (#ifdef 等),使 Online Judge 能忽略它们。
  2. 由于我们会检查 stdout,你向 stdout 的额外输出可能导致 Wrong Answer。请阅读代码,将日志输出到日志文件中。
  3. 我们编译时没有 differential test。
  4. 编译环境为 Ubuntu 20.04 (Docker; gcc 9.3.0);如遇 Invalid Opcode 会返回 4 字节的指令。
  5. LiteNES 会使用你实现的 klib 中的函数 (memcpy, printf 等)。我们会在每一帧之后输出该帧的 checksum,并检查某些关键帧的图形是否正确。因此确保你能正确看到 Super Mario Bros 的演示视频。
Creative Commons License    苏 ICP 备 2020049101 号