### Test of double instructions
main: addu $s7, $ra, $zero
la $s1, M # data addr
### calculate and print 8+5 ######
l.d $f2, 64($s1) # 8.0
l.d $f4, 40($s1) # 5.0
add.d $f6, $f2, $f4
s.d $f6, 80($s1)
# Print 8+5
li $v0, 3
l.d $f12, 80($s1)
syscall
# Print NewL as ASCII char
li $v0, 4
la $a0, NewL
syscall
### calculate and print 7-3 ######
l.d $f2, 56($s1) # 7.0
l.d $f4, 24($s1) # 3.0
sub.d $f6, $f2, $f4
s.d $f6, 80($s1)
# Print 7-3
li $v0, 3
l.d $f12, 80($s1)
syscall
# Print NewL as ASCII char
li $v0, 4
la $a0, NewL
syscall
### calculate and print 9*7 ######
l.d $f2, 72($s1) # 8.0
l.d $f4, 56($s1) # 5.0
mul.d $f6, $f2, $f4
s.d $f6, 80($s1)
# Print 9*7
li $v0, 3
l.d $f12, 80($s1)
syscall
# Print NewL as ASCII char
li $v0, 4
la $a0, NewL
syscall
### calculate and print 1/7 ######
l.d $f2, 8($s1) # 1.0
l.d $f4, 56($s1) # 7.0
div.d $f6, $f2, $f4
s.d $f6, 80($s1)
# Print 1/7
li $v0, 3
l.d $f12, 80($s1)
syscall
# Print NewL as ASCII char
li $v0, 4
la $a0, NewL
syscall
# Stuff at end ###################
addu $ra, $s7, $zero
jr $ra # ret to sys
### data declarations ############
.data
.align 3
M: .double 0.,1.,2.,3.,4.,5.
.double 6.,7.,8.,9. # cons
.space 208 # a to z
.space 1000 # 125 temps
Blank: .asciiz " "
NewL: .asciiz "\n"
Tab: .asciiz "\t"
| ### Test of double instructions
main: addu $s7, $ra, $zero
la $s1, M # data addr
### calculate and print 8+5 ######
l.d $f2, 64($s1) # 8.0
l.d $f4, 40($s1) # 5.0
add.d $f20, $f2, $f4
s.d $f6, 80($s1)
jal printit
### calculate and print 7-3 ######
l.d $f2, 56($s1) # 7.0
l.d $f4, 24($s1) # 3.0
sub.d $f6, $f2, $f4
s.d $f6, 80($s1)
jal printit
### calculate and print 9*7 ######
l.d $f2, 72($s1) # 9.0
l.d $f4, 56($s1) # 7.0
mul.d $f6, $f2, $f4
s.d $f6, 80($s1)
jal printit
### calculate and print 1/7 ######
l.d $f2, 8($s1) # 1.0
l.d $f4, 56($s1) # 7.0
div.d $f6, $f2, $f4
s.d $f6, 80($s1)
jal printit
# Stuff at end ###################
addu $ra, $s7, $zero
jr $ra # ret to sys
### print function, prints 80($s1)
printit:
li $v0, 3
l.d $f12, 80($s1)
syscall
# Print NewL as ASCII char
li $v0, 4
la $a0, NewL
syscall
jr $ra # ret to sys
### data declarations ############
.data
.align 3
M: .double 0.,1.,2.,3.,4.,5.
.double 6.,7.,8.,9. # cons
.space 208 # a to z
.space 1000 # 125 temps
Blank: .asciiz " "
NewL: .asciiz "\n"
Tab: .asciiz "\t"
| % spim example.s
SPIM V 7.4 of Jan 1, 2009
Copyright 1990-2004 by ...
All Rights Reserved
See the file README for ...
Loaded:
/usr/lib/spim/exceptions.s
13 = 8+5
4 = 7-3
63 = 9*7
0.142857142857142849 = 1/7
|