实验 2:汇编程序设计
任务 1:阅读理解用于 RV32I 指令测试的程序
Task 1
在 RARS 上运行斐波那契数列程序,观察其运行结果,并正确导出 COE 文件。
RARS 与 RISC-V
RARS 是基于 RISC-V 架构的汇编综合实验平台。RARS 程序提供了汇编器、仿真器(参考 ICS LabA\(\&\)S)等功能,同时也包含了方便的外设接口与信息查询接口,被广泛用于 RISC-V 汇编程序的编写与测试之中。
你可以点击这里获取 1.6 版本的 Rars 应用。Rars 在安装了 Java 运行环境的电脑上都可以正常使用。你可以在 Vlab 平台上获取 Java 的有关资源。由于篇幅有限,大家可以参考这篇博客中的相关内容或其他教程进行下载与安装。当然,你可以直接使用 Vlab 上的虚拟机,其内置了包含 Rars 在内全套的实验应用。
RISC-V 汇编程序涉及到的相关知识点请参考课本与 RISC-V 指令集手册 。如果你以前未接触过,或不熟悉汇编语言编程的话,可以参考这篇教程。本次实验中,你可能会关注下面的内容:4-Assembly language、6-The RV32I ISA。
在主界面上,单击 Settings >> Memory Configuration 即可打开下图所示的子界面。在 RARS 中,内存空间被划分为许多部分。按照功能可以概括为:程序段、数据段、栈空间与堆空间、内核空间以及 MMIO 保留地址。根据设置的不同,各个部分的相对位置与大小也有所不同,最终翻译出的 PC 相对寻址指令也会不同。
对于本次实验,请将内存空间设置为紧凑型(Compact),数据段位于低地址。
正常运行 Rars 程序后,你将看到下面的界面。
为了创建一个新项目,你可以在左上角,依次单击 File \(\rightarrow\) New,即可新建一个 .asm 汇编文件。此时我们便可以进行汇编代码的编写工作。
完成编写后,请保存 .asm 文件,如上图所示点击 Assemble 按钮。此时 Rars 便会开始编译 RISC-V 代码,并在下方提示可能的错误。如果一切顺利,我们就可以进入调试界面,开始执行汇编程序。
在执行与调试时,请善用断点功能,并及时查看各个寄存器和存储单元中的数值变化。
在代码编译之后,你可以在左上角点击 File\(\rightarrow\)Dump Memory,即可选择将代码段或数据段导出成 COE 文件。你需要选择十六进制的格式导出,并参考 COE 文件的格式添加部分内容。
对于 Rars 的其他功能,请在程序内点击 Help 查看官方的教程。
任务 2:汇编冒泡排序
Task 2
编写 RISC-V 汇编程序,排序 128 个整数。你可以自行指定其为有符号数还是无符号数,并在检查时指出二者在实现时的区别。
原始数据我们已经提供在 lab2_data.txt 中,你可以将其复制在汇编程序的开头部分,以填充数据段的存储空间。