私はMIPSでのプログラミングに不慣れで、1つの問題で問題を抱えています。私は方程式f=5-a [3] + g*hを解くために働いています
For:g=3,
h=5, and
a[0]= 10, a[1]= 8, a[2]= 6, a[3]=4 .... a[4]=2
これが私がすでに持っているコードです:
.data
g: .word 3 #
h: .word 5
a: .word 10,8,6,4,2,0
f: .space 4
mes1: .ascii "Problem 3:"
newL: .ascii "\n"
.text
main:
lw $t0, g #t0= g
lw $t1, h #t1= h
mul $t2, $t0, $t1 #t2= g *h
add $t3, $zero, 4 #t3= 4
mul $t4, $t0, $t3 #t4= 3 * 4
lw $t5, 0($t4)
add $t5, $t5, $t2 #t5= a[3] + (g * h)
sub $t5, $t0, $t5 #t5= 5 - [a[3] + g * h]
sw $t5, f #f= t5
la $a0, mes1 #loads addr for label in a0
li $v0, 4 #prepares to output as a string
syscall #prints label
la $a1, f #loads addr for a in a1
li $v0, 1 #prepares to output as an int
syscall #prints a
li $v0, 10 #call to terminate program
syscall #terminates program
spimで実行すると、次の出力が得られます。
spim -file problem3.asm
SPIM Version 8.0 of January 8, 2010
Copyright 1990-2010, James R. Larus.
All Rights Reserved.
See the file README for a full copyright notice.
Loaded: /usr/lib/spim/exceptions.s
Exception occurred at PC=0x00400040
Bad address in data/stack read: 0x0000000c
Exception 7 [Bad data address] occurred and ignored
Problem 3:
268501028
現在、不正なデータアドレスの例外が発生し、出力としてランダムに大きな数値が発生します。SOの誰かが、私が間違っていること、なぜジャンク出力を取得しているのか、何を変更する必要があるのかを教えてくれれば素晴らしいと思います。前もって感謝します