【问题标题】:QtSpim Error "Attempt to execute non-instruction at 0x0040000c"QtSpim 错误“尝试在 0x0040000c 处执行非指令”
【发布时间】:2019-06-30 16:32:37
【问题描述】:

我刚开始学习 MIPS 32 并尝试运行此代码,它在 MARS MIPS 模拟器上运行顺利,但是当我将其保存到 (.asm) 文件并尝试在 QtSpim 上运行时,控制台弹出消息“你好World”,但出现错误:“尝试在 0x0040000c 处执行非指令”也出现,我是否遗漏了什么或任何部分不正确?

Error screnshot

我也尝试取消选中异常处理程序,但无济于事。

  • 代码如下:

    .data
        Message: .asciiz "Hello World"
    
    .text
        li $v0, 4
        la $a0, Message
        syscall
    

【问题讨论】:

    标签: mips qtspim


    【解决方案1】:

    根据spim的观点,你的程序有两个问题

    1. spim 需要一个 main 并且在您的程序中没有声明。

    2. spim 在最后一条指令之后继续执行“程序”。最后应该有一个系统调用 10 来停止执行。

    所以,你的 spim 程序的工作版本是

    .data
        Message: .asciiz "Hello World"
    
    .text
    main:                            # start of program
        li $v0, 4
        la $a0, Message
        syscall
    exit:
        li      $v0, 10              # syscall 10 terminates program 
        syscall                      # and exits 
    

    确实,spim 有点敏感,如果可能的话,我建议你使用 mars。除此之外,始终在程序中添加主程序和退出程序是一个好习惯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      相关资源
      最近更新 更多