Robin Harcker

02-CompileCodeInstructAndStack

调用过程和堆栈

Lab

risk-v 指令实现如下逻辑

n=9
while n != 1:
    if n % 2 == 0
        n=n/2
    else:
        n = 3*n + 1
li a0, 9
li a3, 1

While:
    bne a0, a3, If
    j End

If:
    andi a1, a0, 1
    bnez a1, Else
Then:
    srai a0, a0, 1
    j While
Else:
    slli a2, a0, 1
    add a0, a0, a2
    addi a0, a0, 1
    j While

End: