【问题标题】:MIPS assembly, adding to jumpMIPS组装,添加跳转
【发布时间】:2015-04-16 12:48:01
【问题描述】:

我的汇编代码有问题:

# Program testing 
        .text
        .globl  main

main:   ori $4,$0,1
        addiu $4,$4,2
        addiu $8,$10,4
        addiu $2,$1,1
        addiu $3,$1,1
        addiu $5,$1,1
        j main+8       #ERROR HERE
        sll $0,$0,0

# End of file

我想增加我的跳跃。我的教授说这行得通,但我不断收到解析器错误

我在 PCSPIM 中的 MIPS 设置是:
检查裸机、延迟分支和延迟加载。

有谁知道怎么回事?是否存在单词对齐问题?

【问题讨论】:

  • 也许 SPIM 不支持这一点。你可以试试la $t0, main+8 / jr $t0,SPIM 似乎可以接受。

标签: assembly mips mips32 pcspim


【解决方案1】:

这里没有单词对齐问题。 您的问题是您使用的汇编程序没有将 label+displacement 解释为目标地址。

由于每条指令占用 4 个字节,您实际上是在尝试在 main 标签之前跳转两条指令。因此,只需在您真正定位跳跃的地方添加一个新标签。

即:

# Program testing 
        .text
        .globl  main

main:   ori $4,$0,1
        addiu $4,$4,2
jump_target:
        addiu $8,$10,4
        addiu $2,$1,1
        addiu $3,$1,1
        addiu $5,$1,1
        j jump_target       # main+8
        sll $0,$0,0

# End of file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多