【发布时间】:2016-02-27 15:24:06
【问题描述】:
我正在尝试编写比较字符串函数,但是当我将字符从地址加载到寄存器时出现问题。错误是:
第 516 行:0x00400600 处的运行时异常:地址超出范围 0x6972614d
错误在于指令lbu $t4,($t5)。
$t5 包含使用指令la $t5,name0 传递的地址。
search_name:
lbu $t4,($t5)
lbu $t2,0($t6)
beq $t2,10,search_surname
bne $t2,$t4,loop_search
addi $t6,$t6,1
addi $t5,$t5,1
j search_name
【问题讨论】:
-
我猜你应该发帖MCVE。
-
虽然我对 MIPS 的经验并不丰富,但我认为错误不在这部分代码中。您似乎更有可能传递了错误的地址,或者那里有非法数据导致它读取越界。 (鉴于未对齐的地址,后者似乎不太可能。)
-
另外,如果你不介意我问,你确定
0x00400600是lbu指令吗?该地址似乎与任何随机指令完全对齐。当然,这可能是一个诚实的巧合,也可能是因为项目组织,但这似乎值得验证。 -
我确定因为第 516 行是指令 lbu,程序在这一行结束。