我已将 ac 程序转换为汇编程序,并试图简化代码:
.global Func1
Func1: save %sp, -112, %sp
!st %i0, [%fp+68]
!st %i1, [%fp+72]
!ld [%fp+68], %o0
!ld [%fp+72], %o1
call Func2, 0
nop
mov %o0, %g1
mov %g1, %i0
ret
restore
.global Func2
Func2: save %sp, -112, %sp
!st %i0, [%fp+68]
!st %i1, [%fp+72]
!ld [%fp+68], %g2
!ld [%fp+72], %g1
add %g2, %g1, %g1
umul %g1, 2, %g1
mov %g1, %i0
ret
restore
我已经将它简化到当我尝试更改某些内容时,它会更改程序的返回值。我的问题是,st 和 ld 是做什么的?我知道他们的意思,但这里到底发生了什么?仅使用 mov 或其他方法是否有其他方法可以做到这一点?很难在网上找到这类事情的资源,因此我们将不胜感激。