Mips 发生无限[错误指令地址],并发生忽略错误。可以更改哪些内容来解决此问题?
我正在研究一个MIPS斐波那契序列。然而,若我运行程序,我输入一个数字,得到的只是无限次的错误:[错误指令地址]发生并忽略了无限次。我该怎么办?我只允许在“s”之间更改代码 下面是我的MIPS代码Mips 发生无限[错误指令地址],并发生忽略错误。可以更改哪些内容来解决此问题?,mips,fibonacci,Mips,Fibonacci,我正在研究一个MIPS斐波那契序列。然而,若我运行程序,我输入一个数字,得到的只是无限次的错误:[错误指令地址]发生并忽略了无限次。我该怎么办?我只允许在“s”之间更改代码 下面是我的MIPS代码 .data newline: .asciiz "\n" str0: .asciiz "Enter a positive integer: " str1: .asciiz "ERROR: received a negative inte
.data
newline:
.asciiz "\n"
str0:
.asciiz "Enter a positive integer: "
str1:
.asciiz "ERROR: received a negative integer!\n"
str2:
.asciiz "INFO: fibonacci returned "
.text
# $a0: n (<1024)
################################################################################FIXME
fibonacci:
li $t2, 1
addiu $sp, $sp, -12
sw $ra, 0($sp)
sw $s0, 4($sp)
sw $s1, 8($sp)
addiu $s0, $a0, 0
beq $zero, $s0, ResultOne
beq $t2, $s0, ResultOne
bltz $s0, Negative
addiu $a0, $s0, -1
jal fibonacci
addiu $s1, $v1, 0
addiu $a0, $s0, -2
jal fibonacci
addu $v1, $v1, $s1
j finish
ResultOne:
li $v0, 1
li $v1, 1
j Finish
Negative:
li $v0, 0
j Finish
Finish:
lw $s1, 8($sp)
lw $s0, 4($sp)
lw $ra, 0($ra)
addiu $sp, $sp,12
jr $ra
# FIXME
################################################################################
.globl main
main:
# print_string str0
li $v0, 4
la $a0, str0
syscall
# $t0 = read_int
li $v0, 5
syscall
move $t0, $v0
# $s0 = $ra; fibonacci($t0); $ra = $s0
move $s0, $ra
move $a0, $t0
jal fibonacci
move $ra, $s0
# $t0 = $v0; $t1 = $v1
move $t0, $v0
move $t1, $v1
# if ($t0 == 0) { goto main_failure }
beq $t0, $zero, main_failure
main_success:
# print_string str2
li $v0, 4
la $a0, str2
syscall
# print_int $t1
li $v0, 1
move $a0, $t1
syscall
# print_string newline
li $v0, 4
la $a0, newline
syscall
# goto main_return
b main_return
main_failure:
# print_string str1
li $v0, 4
la $a0, str1
syscall
main_return:
# return
jr $ra
.data
新行:
.asciiz“\n”
str0:
.asciiz“输入一个正整数:”
str1:
.asciiz“错误:收到一个负整数!\n”
str2:
.asciiz“信息:返回斐波那契”
.文本
#$a0:n(1.实际完整的错误消息是什么?2.您使用的是SPIM还是MARS?我使用的是SPIM。很抱歉,我忘了提及这一点。确切的错误消息如下。在PC=0x00115798文本读取中出现异常错误地址:0x00115798异常6[错误指令地址]在PC=0x0011579c文本读取错误地址时发生和忽略的异常:0x0011579c异常6[错误指令地址]在PC=0x001157a0文本读取错误地址时发生和忽略的异常:0x001157a0异常6[错误指令地址]发生并忽略了,我只是得到了无限数量的此类错误…我不知道为什么!您的程序正在将处理器发送到无效内存以获取指令。要了解您的程序为什么这样做,请单步执行,直到您得到错误为止。(您程序的)实际指令将其发送到weeds的是一台值类似于00400xxx的PC。然后,您需要检查该指令,并可能查看其执行情况。