计算机结构实验三,计算机体系结构实验报告——实验三.pdf

计算机体系结构实验报告——实验三

1.实验目的:

通过实验,熟练掌握WINDLX 的操作方法,特别注意在单步执行WinDLX程序中,流水线

中指令的节拍数。

2.实验内容:

(1) 用WinDLX模拟器执行求素数程序prim.s。这个程序计算若干个整数的素数。

(2) 单步执行两轮程序,求出素数2和3。

(3) 在执行程序过程中,注意体验单步执行除法和乘法指令的节拍数,并和主菜单

configuration/floating point slages中的各指令执行拍数进行比较。

3.实验程序

求素数程序prim.s。

;***********WINDLX Exp.2: Generate prime number table *************

;

;Program begins at symbol main

; generates a table with the first 'Count' prime numbers from 'Table'

;

.data

;*** size of table

.global Count

Count: .word 10 ;10的地址值

.global Table

Table: .space Count*4 ;给Table保留Count*4个字节

.text

.global main

main:

;*** Initialization

addi r1,r0,0 ;Index in Table ;0+0地址值送R1

addi r2,r0,2 ;Current value ;0+2地址值送R2

;***Determine, if R2 can be divided by a value in table

NextValue: addi r3,r0,0 ;Helpindex in Table ;0+0地址值送R3

Loop: seq r4,r1,r3 ;End of Table? ;IF r1==r3? Yes r4=1;else r4=0;

bnez r4,IsPrim ;R2 is a prime number r4!=0,excute IsPrim

lw r5,Table(R3)

divu r6,r2,r5

multu r7,r6,r5

subu r8,r2,r7

beqz r8,IsNoPrim ;ifr8==0,excute IsNoPrim

addi r3,r3,4 ; r3+4->r3

j Loop

IsPrim: ;***Write value into Table and increment index

sw Table(r1),r2

addi r1,r1,4

;*** 'Count' reached?

lw r9,Count

srli r10,r1,2

sge r11,r10,r9

bnez r11,Finish

IsNoPrim: ;***Check next value

addi r2,r2,1 ;incrementR2

j NextValue

Finish: ;*** end

trap 0

4、实验流程图

5、实验步骤和结果

单步执行过程中寄存器的变化情况

(1)获取素数2:

由于R1=R3=0,所以R2=2为素数,将2送入Table (0)中。

(2)获取素数3。执行步骤以及对应的寄存器的变化情况:

1>R2=2 isPRim,R4=1; 2>R1+4->R1; 3>10->R9,R1/4->R10,R2+1->R2; 4>R1!=R3,R4=0;

5>Table(R3)->R5; 6>R2/R5->R6; 7>R6*R5->R7 ; 8>R2-R7->R8;

9>R3+4->R3; 10>R2=3 is PRim, R4=1; 11>R2=3->Table(4),R1+4->R1;

(3)乘法指令的节拍数为:5 (-9—-5);除法指令的节拍数为:19 (-28—-10);主菜单

configuration/floating point slages中的各指令执行拍数:乘法为5;除法为19。正好

与上述的执行过程一致。

(4)数据相关和结构相关:

数据相关:

Addi r1,r0,0x0

Addi r2,r0,0x2

Addi r3,r0,0x0

Seq r4,r1,r3

Bnez r4,lsprim

Lw r

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值