【问题标题】:MIPS: Fetch Address Not Aligned on Word BoundaryMIPS:获取地址未在字边界上对齐
【发布时间】:2014-05-27 03:43:47
【问题描述】:

我的最后一行代码出现以下错误:

line 14: Runtime exception at 0x00400020: fetch address not aligned on word boundary 0x1000066a

我不明白为什么会出现此错误,因为单词应该在地址 0x10000004 处完美对齐(因为全局指针设置为 0x10008000)所以 $s1 应该设置为值 @987654325 @。

.data   0x10000000
a:      .word 5
one:    .word 1

.text 0x400000
main:   addi    $s2, $zero, 30
        addi    $s3, $zero, 75
        addi    $sp, $sp, -4
        addi    $t0, $zero, 7
        sw  $t0, 0($sp)
        lw  $s0, -0x8000($gp)
        add $s4, $s0, $s2
        add $s4, $s4, $s3
        lw  $s1, -0x7996($gp)

非常感谢所有帮助和意见。

【问题讨论】:

    标签: runtime mips mips32


    【解决方案1】:

    0x8000 不是八千,减去 4 得到 7996 这实际上是十六进制的“0x”,所以数字是这样的:

    0x7FF8 0x7FFC 0x8000 0x8004 0x8008 0x800C 等等。

    我还根据你所说的假设你在 mips-32

    【讨论】:

      【解决方案2】:

      你在用十进制计算。 0x8000 - 0x7996 等于 0x66A,它不是字对齐的。你应该写的是:

      lw  $s1, -0x7FFC($gp)
      

      【讨论】:

        猜你喜欢
        • 2016-08-24
        • 2017-06-25
        • 2012-03-05
        • 2016-08-06
        • 2013-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多