prog2

Source

#
# test.s
#
# program to demonstrate RiSC-16 core
# (uses all opcodes)
#
	lw	r1, r0, arg1
	lw	r3, r0, count
	add	r4, r0, r0
loop:	lw	r2, r4, arg2
	movi	r7, sub
	jalr	r7, r7
	addi	r3, r3, -1
	addi	r4, r4, 1
	bne	r3, 0, loop
exit:	sw	r1, r0, diff
	halt
#
# subtract function
#
sub:	nand	r2, r2, r2
	addi	r2, r2, 1
	add	r1, r1, r2
	jalr	r0, r7
#
# data:
#
# count is the number of items to subtract from arg1
# (in this case, 3: arg2 and two beyond it)
# diff is where the result is placed
#
count:	.fill	3
arg1:	.fill	8476
arg2:	.fill	2
	.fill	3
	.fill	4
	.fill	1
	.fill	345
diff:	.fill	0

Simulation Results

#pcoprdqdaddr
100lw1211C0011
201lw300030010
302add40000
403lw200020012
504lui70000
605addi7000C
706jalr70007
80Cnand2FFFD
90Daddi2FFFE
100Eadd1211A
110Fjalr00010
1207addi30002
1308addi40001
1409bne30003
1503lw200030013
1604lui70000
1705addi7000C
1806jalr70007
190Cnand2FFFC
200Daddi2FFFD
210Eadd12117
220Fjalr00010
2307addi30001
2408addi40002
2509bne30003
2603lw200040014
2704lui70000
2805addi7000C
2906jalr70007
300Cnand2FFFB
310Daddi2FFFC
320Eadd12113
330Fjalr00010
3407addi30000
3508addi40003
3609bne30000
370Asw121130017

Registers

formatr1r2r3r4r5r6r7
hex2113FFFC00000003555566660007
decimal8467-40321845262147

Memory

addr0123456789ABCDEF
0000A411AC101000AA127C003F8CFF802DFF 3201CC798417E071490229010482E380
00100003211C000200030004000101592113







Pipeline Results

#IFIDEXWBok
10000
lw




20001
lw
0000
1 0 0



30002
add
0001
3 0 0
0000
0011


4qd = 211c from mem[0x11]
50003
lw
0002
4 0 0
0001
0010
0000
211c
0000
211c
6qd = 0003 from mem[0x10]
70004
lui
0003
2 4 0
0002
0000
0001
0003
0001
0003

qa forwarded: 0000
80005
addi
0004
7 0 0
0003
0012
0002
0000
0002
0000
9qd = 0002 from mem[0x12]
100006
jalr
0005
7 7 0
0004
0000
0003
0002
0003
0002

qa forwarded: 0000
110007
addi
0006
7 7 0
0005
000c
0004
0000
0004
0000

qa forwarded: 000c
12

0006
0007
0005
000c
0005
000c
13000c
nand


0006
0007
0006
0007
14000d
addi
000c
2 2 2



15000e
add
000d
2 2 0
000c
fffd



qa forwarded: fffd
16000f
jalr
000e
1 1 2
000d
fffe
000c
fffd
000c
fffd

qb forwarded: fffe
170010
add
000f
0 7 0
000e
211a
000d
fffe
000d
fffe
18

000f
0010
000e
211a
000e
211a
190007
addi


000f
0010
000f
0010
200008
addi
0007
3 3 0



210009
bne
0008
4 4 0
0007
0002


22000a
sw
0009
0 0 3
0008
0001
0007
0002
0007
0002
23

0009
0003
0008
0001
0008
0001
240003
lw


0009
0003
0009
0003
250004
lui
0003
2 4 0



260005
addi
0004
7 0 0
0003
0013


27qd = 0003 from mem[0x13]
280006
jalr
0005
7 7 0
0004
0000
0003
0003
0003
0003

qa forwarded: 0000
290007
addi
0006
7 7 0
0005
000c
0004
0000
0004
0000

qa forwarded: 000c
30

0006
0007
0005
000c
0005
000c
31000c
nand


0006
0007
0006
0007
32000d
addi
000c
2 2 2



33000e
add
000d
2 2 0
000c
fffc



qa forwarded: fffc
34000f
jalr
000e
1 1 2
000d
fffd
000c
fffc
000c
fffc

qb forwarded: fffd
350010
add
000f
0 7 0
000e
2117
000d
fffd
000d
fffd
36

000f
0010
000e
2117
000e
2117
370007
addi


000f
0010
000f
0010
380008
addi
0007
3 3 0



390009
bne
0008
4 4 0
0007
0001


40000a
sw
0009
0 0 3
0008
0002
0007
0001
0007
0001
41

0009
0003
0008
0002
0008
0002
420003
lw


0009
0003
0009
0003
430004
lui
0003
2 4 0



440005
addi
0004
7 0 0
0003
0014


45qd = 0004 from mem[0x14]
460006
jalr
0005
7 7 0
0004
0000
0003
0004
0003
0004

qa forwarded: 0000
470007
addi
0006
7 7 0
0005
000c
0004
0000
0004
0000

qa forwarded: 000c
48

0006
0007
0005
000c
0005
000c
49000c
nand


0006
0007
0006
0007
50000d
addi
000c
2 2 2



51000e
add
000d
2 2 0
000c
fffb



qa forwarded: fffb
52000f
jalr
000e
1 1 2
000d
fffc
000c
fffb
000c
fffb

qb forwarded: fffc
530010
add
000f
0 7 0
000e
2113
000d
fffc
000d
fffc
54

000f
0010
000e
2113
000e
2113
550007
addi


000f
0010
000f
0010
560008
addi
0007
3 3 0



570009
bne
0008
4 4 0
0007
0000


58000a
sw
0009
0 0 3
0008
0003
0007
0000
0007
0000
59000b
halt
000a
0 0 1
0009
0000
0008
0003
0008
0003
60
000b
0 0 0
000a
0017
0009
0000
0009
0000
61mem[0x17] = 2113
62

000b
0000
000a
2113
000a
2113

Registers

formatr1r2r3r4r5r6r7
hex2113FFFC00000003555566660007
decimal8467-40321845262147

Memory

addr0123456789ABCDEF
0000A411AC101000AA127C003F8CFF802DFF 3201CC798417E071490229010482E380
00100003211C000200030004000101592113








Maintained by John Loomis, last updated 8 April 2010