mips

Page 1 of 1

1 Replies - 5346 Views - Last Post: 14 December 2009 - 10:04 AM

#1 mahmouduk

Reputation: 0
• Posts: 1
• Joined: 14-December 09

mips

Posted 14 December 2009 - 04:40 AM

```######################################################
#
# Project 1 Matrices Multiplication
# Group Names:
# 2.mohammed abuwarda 160063654
#
######################################################
.data
strA: .asciiz "First Matrix:\n "
strB: .asciiz "Second Matrix:\n "
strC: .asciiz "Product Matrix:\n "
newline: .asciiz "\n"
space: .asciiz " "
# This is the start of the First Matrix.
matrix1: .word 111, 112, 113
.word 103, 104, 105
.word 190, 95 , 199
matrix2: .word 90, 91, 92
.word 101, 202, 303
.word 9, 10, 11
# The next statement allocates room for the product.
# The matrix takes up 4*9=36 bytes.
#.space n allocates n empty bytes in the memory
product: .space 36
.align 2
.text
# Your well-commented program starts here.
main:
li   \$t1, 32       # \$t1 = 32 (row size/loop end)
li   \$s0, 0        # i = 0; initialize 1st for loop
L1: li   \$s1, 0        # j = 0; restart 2nd for loop
L2: li   \$s2, 0        # k = 0; restart 3rd for loop
sll  \$t2, \$s0, 5   # \$t2 = i * 32 (size of row of x)
addu \$t2, \$t2, \$s1 # \$t2 = i * size(row) + j
sll  \$t2, \$t2, 3   # \$t2 = byte offset of [i][j]
l.d  \$f4, 0(\$t2)   # \$f4 = 8 bytes of x[i][j]
L3: sll  \$t0, \$s2, 5   # \$t0 = k * 32 (size of row of z)
addu \$t0, \$t0, \$s1 # \$t0 = k * size(row) + j
sll  \$t0, \$t0, 3   # \$t0 = byte offset of [k][j]
l.d  \$f16, 0(\$t0)  # \$f16 = 8 bytes of z[k][j]
sll  \$t0, \$s0, 5       # \$t0 = i*32 (size of row of y)
addu  \$t0, \$t0, \$s2    # \$t0 = i*size(row) + k
sll   \$t0, \$t0, 3      # \$t0 = byte offset of [i][k]
l.d   \$f18, 0(\$t0)     # \$f18 = 8 bytes of y[i][k]
mul.d \$f16, \$f18, \$f16 # \$f16 = y[i][k] * z[k][j]
add.d \$f4, \$f4, \$f16   # f4=x[i][j] + y[i][k]*z[k][j]
addiu \$s2, \$s2, 1      # \$k k + 1
bne   \$s2, \$t1, L3     # if (k != 32) go to L3
s.d   \$f4, 0(\$t2)      # x[i][j] = \$f4
addiu \$s1, \$s1, 1      # \$j = j + 1
bne   \$s1, \$t1, L2     # if (j != 32) go to L2
addiu \$s0, \$s0, 1      # \$i = i + 1
bne   \$s0, \$t1, L1     # if (i != 32) go to L1
```

This post has been edited by JackOfAllTrades: 14 December 2009 - 10:04 AM

Is This A Good Question/Topic? 0

Replies To: mips

• Saucy!

Reputation: 6165
• Posts: 23,833
• Joined: 23-August 08

Re: mips

Posted 14 December 2009 - 10:04 AM

Moved to Assembly