体系结构实验(2)—— 不同指令集的对比

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

Chp2 LAB Comparison of Instruction Sets

P0

0.1 安装虚拟机 Win Xp (32 bit)

  1. 首先打开VMware workstation 安装 雨林木风 WinXP SP3 安装版 YS8.0

安装过程截图如下:

在这里插入图片描述

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

在这里插入图片描述

0.2 安装和使用WinDXL

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

在这里插入图片描述

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

在这里插入图片描述

  1. 为了初始化模拟器,点击File菜单中的Reset all菜单项,弹出一个“Reset DLX”对话框。然后点击窗口中的确认按钮即可。
    在这里插入图片描述

  2. 点击Configuration打开菜单,然后分贝点击Floating Point StagesMemory Size菜单项,选择如下标准配置

在这里插入图片描述

0.2.2 程序的装载和模拟
  1. 选择File Load Code or Data,窗口中会列出目录中所有汇编程序。然后选择prim.s , 先点击select 再点击load。 这是会出现弹窗,选择是(Y)
    在这里插入图片描述

  2. 点击主窗口中的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	       *************

;---------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyw2002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值