# Matrix Multiplication in RISC-V without loops .data A: .word 2, 1, 3 .word 3, 4, 1 .word 5, 2, 3 B: .word 1, 2, 0 .word 4, 1, 2 .word 3, 2, 1 C: .space 36 # 9 elements * 4 bytes = 36 bytes .text .globl main main: la t0, A # t0 = base of A la t1, B # t1 = base of B la t2, C # t2 = base of C # Calculate C[0] = A[0]*B[0] + A[1]*B[3] + A[2]*B[6] lw t3, 0(t0) # A[0] lw t4, 0(t1) # B[0] mul t5, t3, t4 lw t3, 4(t0) # A[1] lw t4, 16(t1) # B[3] mul t6, t3, t4 add t5, t5, t6 lw t3, 8(t0) # A[2] lw t4, 32(t1) # B[6] mul t6, t3, t4 add t5, t5, t6 sw t5, 0(t2) # Store C[0] # Calculate C[1] = A[0]*B[1] + A[1]*B[4] + A[2]*B[7] lw t3, 0(t0) # A[0] lw t4, 4(t1) # B[1] mul t5, t3, t4 lw t3, 4(t0) # A[1] lw t4, 20(t1) # B[4] mul t6, t3, t4 add t5, t5, t6 lw t3, 8(t0) # A[2] lw t4, 28(t1) # B[7] mul t6, t3, t4 add t5, t5, t6 sw t5, 4(t2) # Store C[1] # Calculate C[2] = A[0]*B[2] + A[1]*B[5] + A[2]*B[8] lw t3, 0(t0) # A[0] lw t4, 8(t1) # B[2] mul t5, t3, t4 lw t3, 4(t0) # A[1] lw t4, 24(t1) # B[5] mul t6, t3, t4 add t5, t5, t6 lw t3, 8(t0) # A[2] lw t4, 36(t1) # B[8] mul t6, t3, t4 add t5, t5, t6 sw t5, 8(t2) # Store C[2] # Calculate C[3] = A[3]*B[0] + A[4]*B[3] + A[5]*B[6] lw t3, 12(t0) # A[3] lw t4, 0(t1) # B[0] mul t5, t3, t4 lw t3, 16(t0) # A[4] lw t4, 16(t1) # B[3] mul t6, t3, t4 add t5, t5, t6 lw t3, 20(t0) # A[5] lw t4, 32(t1) # B[6] mul t6, t3, t4 add t5, t5, t6 sw t5, 12(t2) # Store C[3] # Calculate C[4] = A[3]*B[1] + A[4]*B[4] + A[5]*B[7] lw t3, 12(t0) # A[3] lw t4, 4(t1) # B[1] mul t5, t3, t4 lw t3, 16(t0) # A[4] lw t4, 20(t1) # B[4] mul t6, t3, t4 add t5, t5, t6 lw t3, 20(t0) # A[5] lw t4, 28(t1) # B[7] mul t6, t3, t4 add t5, t5, t6 sw t5, 16(t2) # Store C[4] # Calculate C[5] = A[3]*B[2] + A[4]*B[5] + A[5]*B[8*