文章目录
1. winDLX模拟器
熟悉winDLX模拟器,并确定指令格式中各个域的具体值。包括如下内容:
① 阅读winDLX目录中的wdlxtut.pdf文件(为了方便英文阅读困难的同学们,我从网上下载了一个中文版文件WinDLX教程(中文).doc),并按其中的步骤操作、学习winDLX模拟器。在完成下面问题的过程中,若有疑问,可在MIPS目录的材料中查询相关信息,或者在百度上查询相关信息。
② 对于FACT.S程序,请从中选出3-5条不同的指令,并分别指出它是哪种指令(R-type,I-type,还是J-type),并参照教科书2-28页中的图2.19,填写指令格式中各个域的二进制值(提示:将程序载入到模拟器后,可在CODE子窗口中观察到)。为了清楚起见,最好用填表的形式。
③ 请通过CODE窗口的各种选项查看数据,进而判断出DLX是big-endian还是little-endian?是否是对齐的(aligned)?
1.1. winDLX基本使用
按照教程中的样例一步步进行。下边是剪影
图 1 1 fact.s程序code
1.2. FACT.S程序指令分析
指令助记符 | 指令类型 | 0-5 | 6-10 | 11-15 | 16-20 | 21-25 | 26-31 |
---|---|---|---|---|---|---|---|
addi r2,r0,0x1 | I-type | 001000 | 00000 | 00010 | 00000 | 00000 | 000001 |
movi2fp f11,r2 | I-type | 000000 | 00010 | 00000 | 01011 | 00000 | 110101 |
cvti2d f2,f11 | I-type | 000001 | 01011 | 00000 | 00010 | 00000 | 001101 |
led f0,f4 | I-type | 000001 | 00000 | 00100 | 00000 | 00000 | 011100 |
subd f0,f0,f4 | R-type | 000001 | 00000 | 00100 | 00000 | 00000 | 000101 |
表格 1 DLX 指令分析
1.3. 端序判断
图 1 2 通过memory 工具判断端序
结论:
DLX为大端序,地址左小右大,但是数值最高位在左,是为大端序。
是对齐的。
2. Risc-V和Venus
了解RISC-V的在线模拟器Venus的使用方法。包括如下内容:
- 阅读Venus目录中的venustut.txt文件,并按其中的步骤操作、学习RISC-V的在线模拟器Venus的用法。在完成下面问题的过程中,若有疑问,可在RISC-V目录的材料中查询相关信息,或者在百度上查询相关信息。
- 程序ex1.s的功能是什么?程序运行完后,得出的结果是什么数字?
- 对于ex1.s程序,请从中选出3-5条不同的指令,并对于其中每条指令,指出它是哪种指令。请注意:RISC-V的指令格式分6种(除了R-type,I-type,J-type,还有U-type,S-type,B-type),并填写指令格式中各个域的二进制值。
2.1. Venus的学习
简单学习了在线的venus的用法,包括终端使用,simulator的trace、edit功能。
图 2 1 Venus学习剪影
2.2. Ex1.s程序分析
图 2 2 trace追踪
通过程序追踪发现核心区为通过次数为9的循环,完成斐波那契数列的计算。最后输出数列第九位,即34。
图 2 3 ex1.s 程序结果
这里在venus的文件名为test.a 和a.out。
2.3. Ex1.a程序指令分析
指令助记符 | 指令类型 | 0-5 | 6-10 | 11-15 | 16-20 | 21-25 | 26-31 |
---|---|---|---|---|---|---|---|
add x5 x0 x0 | R-type | 0000000 | 00000 | 000 | 00000 | 00101 | 0110011 |
addi x6 x0 1 | I-type | 0000000 | 00001 | 000 | 00000 | 00110 | 0010011 |
beq x28 x0 24 | B-type | 0000000 | 00000 | 111 | 00000 | 11000 | 1100011 |
jal x0 -20 | J-type | 1111111 | 01101 | 111 | 11111 | 00000 | 1101111 |
lw x28 0(x28) | I-type | 0000000 | 00000 | 111 | 00010 | 11100 | 0000011 |
表格 2 ex1.a程序指令分析
3. 收获和感想
本次实验通过学习和实践,了解到了xp系统经久不衰的魅力,更加通过学习,对DLX和RISC-V指令格式有了更深的理解。特别是,一开始,以为可以通过助记符直接看出是什么类型的指令,后来发现这样是行不通的——还是要从指令二进制码中综合分析才能得出结论。