【问题标题】:Assembly mips instruction lbu汇编 mips 指令 lbu
【发布时间】: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 的经验并不丰富,但我认为错误不在这部分代码中。您似乎更有可能传递了错误的地址,或者那里有非法数据导致它读取越界。 (鉴于未对齐的地址,后者似乎不太可能。)
  • 另外,如果你不介意我问,你确定0x00400600lbu 指令吗?该地址似乎与任何随机指令完全对齐。当然,这可能是一个诚实的巧合,也可能是因为项目组织,但这似乎值得验证。
  • 我确定因为第 516 行是指令 lbu,程序在这一行结束。

标签: assembly mips


【解决方案1】:

这听起来像是间接错误。

0x6972614d 是 ASCII iraM,所以这看起来像是在取消引用部分字符串内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多