Chp2 LAB Comparison of Instruction Sets
P0
0.1 安装虚拟机 Win Xp (32 bit)
- 首先打开VMware workstation 安装 雨林木风 WinXP SP3 安装版 YS8.0
安装过程截图如下:

- 安装VMwareTools,方便再虚拟机和真机之间传输文件,安装完成后重新启动。

0.2 安装和使用WinDXL
0.2.1 安装和配置
- 将WinDLX 文件夹拖动到桌面上,然后点击箭头所指示的图标

- 双击WinDLX图标后,会出现带有六个图标的主窗口。双击其中的一个图标,将显示其子窗口。

-
为了初始化模拟器,点击
File菜单中的Reset all菜单项,弹出一个“Reset DLX”对话框。然后点击窗口中的确认按钮即可。

-
点击
Configuration打开菜单,然后分贝点击Floating Point Stages和Memory Size菜单项,选择如下标准配置

0.2.2 程序的装载和模拟
-
选择
FileLoad Code or Data,窗口中会列出目录中所有汇编程序。然后选择prim.s, 先点击select再点击load。 这是会出现弹窗,选择是(Y)

-
点击主窗口中的
Execution开始模拟。在出现的下拉式菜单中,点击Single Cycle或按F7键。这时可以分别打开子窗口进行查看

-
Pipeline
窗口中用图表形示显示了DLX的五段流水段和浮点操作(加/ 减,乘和除)的单元。
-
Code
可以看到代表存储器内容的三栏信息,从左到右依次为:
地址(符号或数字)、命令的十六进制机器代码和汇编命令。这些不同颜色指明命令处于流水线的哪一段,与pipeline中的信息相对应。其他方框中带有一个“X”标志,表明没有处理有效信息。 -
Clock Cycle Diagram
显示流水线的时空图,当前的模拟正在第二时钟周期。 -
Register
显示寄存器的相关信息
P1
Write a prim.c with the same function as prim.s provided by WinDLX, analyze the assembly code for prim.c.
用与WinDLX提供的prim.s相同的函数编写prim.c,分析prim.c的汇编代码
1.1 分析WinDLX提供的prim.s
1.1.1 WinDLX 汇编语言简介
(1)伪指令:
.data [address] 标识下面的数据存放在数据区,address指示数据区的起始地址;
.text [address] 标识下面的代码存放在代码区,address指示代码区的起始地址;
.global label 使得标有label的代码可以被全局访问;
.word word1,word2,... 在存储器中顺序存放列出的字;
.byte byte 1 ,byte2,... 在存储器中顺序存放列出的字节;
.double number1,... 在存储器中顺序存放列出的双精度数;
.ascii "stringl ",... 在存储器中顺序存放列出的字符串,每个字符串均不会被自动加零结尾;
.asciiz "stringl ",... 在存储器中顺序存放列出的字符串,每个字符串会被自动加零结尾;
.space size 在存储器中空出size大小的区域;
.align n 使得后面的数据/代码地址低n位为О对齐。
(2)关键指令:
addi : R[regb] <-- R[rega] + imm16 将寄存器a中的数值和立即数相加,结果保存在寄存器b中
seq: seq R[regc], R[rega], R[regb] 就是比较寄存器a和寄存器b的数值,如果相等那么寄存器c中的值为1否则为0。
bnez操作:bnez R[rega], label 如果R[rega]如果不为0,则跳转到lable处
1.1.2 prim.s源程序注释
该程序的主要功能是生成Count个质数,并存放在Table起始的地址空间中,其中每个质数占用4个字节单元。
找到质数的方法是枚举。value从第一个质数2开始,不断递增,判断value的值是否能被已经保存在table中的质数整除。如果可以,则不是质数,反之是质数,将value保存在table中,直到找到count个质数。
; *********** WINDLX Exp.2: Generate prime number table *************
;*********** (c) 1991 G¸nther Raidl *************
;*********** Modified 1992 Maziar Khosravipour *************
;---------------------

本文通过实现素数生成程序,对比分析了WinDLX、RISC-V和MIPS三种指令集的特点,包括存储模式、整数计算、寻址方式及条件分支等方面。
最低0.47元/天 解锁文章
3601

被折叠的 条评论
为什么被折叠?



