最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Is there an issue with MARS MIPS Simulator on macOS? My fresh install is outputing incorrect values - Stack Overflow

programmeradmin1浏览0评论

I've recently been running into a strange issue with MARS. When I run the below code on my MacBook Air M2 (macOS Sequoia Version 15.3.2), it outputs 7 3 10 while on other machines, it outputs 5 3 7 as it should.

    .text
MAIN:
    addi $t1, $zero, 5   # int numB = 5 (use $t1 as temporary register)
    addi $a0, $t1, 0     # vala = numB (pass numB as argument to doSth)
    addi $a1, $zero, 3   # valb = 3
    jal doSth            # Call doSth(vala, valb)
    
    addi $a0, $t1, 2     # numB + 2
    addi $v0, $zero, 1   # Print integer
    syscall 
    
    addi $a0, $zero, 10  # newline
    addi $v0, $zero, 11  # Print character
    syscall
    
    j EXIT

doSth:
    addi $sp, $sp, -8    # Allocate stack space
    sw   $ra, 4($sp)     # Save return address
    sw   $a0, 0($sp)     # Save vala

    addi $t2, $zero, 2   # int num = 2 (use $t2 for num)
    move $a0, $a1        # Pass valb as argument
    jal  doOther         # Call doOther(valb)
    add  $t2, $t2, $v0   # num = num + doOther(valb)

    lw   $a0, 0($sp)     # Reload vala
    addi $v0, $zero, 1   # Print integer
    syscall

    addi $a0, $zero, 10  # newline
    addi $v0, $zero, 11  # Print character
    syscall

    move $a0, $a1        # Reload valb
    addi $v0, $zero, 1   # Print integer
    syscall

    addi $a0, $zero, 10  # Print newline
    addi $v0, $zero, 11  # Print character
    syscall

    lw   $ra, 4($sp)     # Restore return address
    addi $sp, $sp, 8     # Restore stack space
    jr   $ra             # Return from doSth

doOther:
    addi $sp, $sp, -4    # Allocate stack space
    sw   $ra, 0($sp)     # Save return address

    addi $t0, $zero, 2   # int numA = 2 (use $t0 for numA as a temporary value)
    sub  $s0, $a0, $t0   # s0 = val - numA (compute val - numA)
    sll  $v0, $s0, 2     # return s0 * 4

    lw   $ra, 0($sp)     # Restore return address
    addi $sp, $sp, 4     # Deallocate stack space
    jr   $ra             # Return

EXIT:
    addi $v0, $zero, 10  # Exit
    syscall

I've tried a fresh install of MARS from the official GitHub repo and get the same result. Also tried updating my Java to 24.

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论