admin管理员组

文章数量:1355754

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.

本文标签: