Code:
### Programmsegment: Matrix-Vektor-Multiplikation ###
# Verwendung der Register:
#
# $s0: n
# $s1: counter_i
# $s2: counter_k
# $s5: index_A
# $s6: index_x
# $s7: index_b
# $f0: A[index_A] (= A[i][k])
# $f2: x[index_x] (= x[k])
# $f4: sum
.text
.globl main
main: lw $s0, dim # n = Matrixdimension
move $s1,$s0 # counter_i = n
move $s5,$0 # index_A = 0
move $s7,$0 # index_b = 0
loopi: blez $s1, endi # while (counter_i > 0)
move $s2,$s0 # counter_k = n
mtc1 $zero, $f4 # sum = 0.0
mtc1 $zero, $f5
move $s6, $0 # index_x = 0
loopk: blez $s2, endk # while (counter_k > 0)
l.d $f0, mat_A($s5) # lade $f0 mit A[index_A]
l.d $f2, vec_x($s6) # lade $f2 mit x[index_x]
add.d $f4,$f4,$f4 # sum +=
mul.d $f4,$f0,$f2 # A[index_A] * x[index_x]
add $s5,$s5,1 # index_A++
add $s6,$s6,1 # index_x++
sub $s2,$s2,1 # counter_k--
j loopk
endk: l.d $f4, vec_b($s7) # speichere sum in b[index_b]
li $v0,2 # printf("%f", sum)
move $a0,$s7
syscall
li $v0,4 # printf("\n")
la $a0, hans
syscall
add $s7,$s7,1 # index_b++
sub $s1,$s1,1 # counter_i--
j loopi
endi: li $v0, 10 # beende Programm
syscall
### Datensegment ###
.data
dim: .word 5
mat_A: .double 2.0, 1.0, 4.0, 2.0, 6.0
.double 1.0, 2.0, 2.0, 4.0, 2.0
.double 4.0, 2.0, 6.0, 1.0, 3.0
.double 4.0, 2.0, 6.0, 2.0, 1.0
.double 4.0, 3.0, 2.0, 2.0, 3.0
vec_x: .double 1.0, 3.0, 5.0, 1.0, 3.0
vec_b: .double 0.0, 0.0, 0.0, 0.0, 0.0
hans: .asciiz "\n"
kann mir jemand helfen wo da der wurm drin ist? hab zurzeit iwie den ein oder anderen hänger..Quote:
Error in C:\Users\Stephen\Downloads\6_3.s line 34: Runtime exception at 0x00400034: address not aligned on doubleword boundary 0x10010009
lg,
der Yo






