🍐liemu简介以及实验须知

什么是 liemu

liemu(读作 理-emu) 是一个简易的 RISC-V 模拟器,支持简单的 RV32I 指令,用于南京理工大学计算机科学与工程学院的《计算机组成原理》课程的教学。

liemu 的设计参考了南京大学 ICS 课程中的 nemu,不过 liemu 的功能较简易,且针对课程内容定制了实验内容。

什么是模拟器

模拟器是一种深度的“虚拟化”,可以模拟硬件机制,使得原本运行在其他硬件平台的程序可以在模拟器上运行。最为著名的模拟器当属 qemu

和模拟器类似的一种软件就是虚拟机,虚拟机有也能够模拟一台计算机,使得你可以在其中安装操作系统,运行程序。但是虚拟机通常只能模拟和其运行的计算机同样硬件架构的设备,不支持跨架构的虚拟化。

模拟器的应用十分广泛。常见的就是安卓模拟器,可以运行安卓平台应用,在有些场景中便于使用键盘和鼠标来操作手机游戏。又例如各种怀旧风格的红白机模拟器、GBA模拟器等等,可以运行卡带游戏,比如口袋妖怪系列。

实验简介

liemu 的主线实验内容,就是不断完善 liemu 模拟器程序,逐步实现更多功能。

实验需要在 Linux 环境下进行,同学们在 Linux 系统(绝大部分应该是 x86_64 架构的)中编写代码,运行 liemu 程序,liemu 中会运行一个简单的 RISC-V 程序。如下图所示,这是一个套娃。

+--------------+
|              |
|RISC-V program|
|              |
+--------------+
|              |
|    liemu     |
|              |
+--------------+
|              |
|    Linux     |
|              |
+--------------+
|              |
|x86_64 device |
|              |
+--------------+

考虑到大部分同学不会在自己的物理机上安装 Linux 系统,而是选择在 Windows 系统中安装 VMware Workstation 或者 VirtualBox 虚拟机软件,然后在虚拟机中安装 Linux 系统。所以套娃更深了:

实验生存指南

提问的智慧

请牢记 STFW, RTFM, RTFSC, ATFAI 提问四连,即在你向他人提问之前,先自己尝试这 4 个步骤解决问题。

  • STFW(Search The Friendly Web): 你遇到的问题,很可能已经有人遇到过了,所以先尝试搜索引擎搜索一下。

  • RTFM(Read The Friendly Manual): 你遇到的问题,很可能在相关的文档里早就写清楚了,所以先尝试阅读一下相关文档。

  • RTFSC(Read The Friendly Source Code): 你遇到的问题,看一下相关的源代码实现就明白了,所以先尝试阅读一下相关源代码。

  • ATFAI(Ask The Friendly AI): 好时代来临了,大模型的出现给大家解决问题提供了新的途径,这是最 Friendly 的一集。

以上 4 个步骤一般要从上到下依次尝试,不要一开始就向人工智能提一些愚蠢问题,你的提问质量越高,它的回答质量就越高。当然你可以用 AI 辅助你进行前 3 个步骤,例如找文档,帮你分析代码等等。

在实验过程中,助教不会回答一些可以轻易通过上述步骤解决的问题,所以请在提问之前先自己尝试解决问题。学会提问的最高境界就是最后不需要提问。

其他提醒

  • liemu 由 C++ 编写,同时掺杂了一些老旧 C 语言的习惯,以及少量现代 C++ 特性。如果你觉得某些用法很陌生,请 STFW 或者 RTFM

  • 实验要求你对 RISC-V 指令集有一定的了解,如果你对 RISC-V 指令集不熟悉,请先阅读相关资料。好在大家都学过 MIPS32 汇编,RISC-V 的32位整数指令集 和 MIPS32 指令集相似程度在 90% 以上。

  • 不要抄袭代码,我们将对代码进行查重。

  • 热门提问将更新在 FAQ

参考资料

最后更新于