1
fmt0:   
    .asciz "%d\n"
    .align 4

    .global main, printf

main:
    save %sp, -76 & -8, %sp
    mov 5, %l0
    st %l0, [%fp-4]

    mov 7, %l1
    st %l1, [%fp-8]

    add %l0, %l1, %l2
    st %l2, [%fp-12]

    clr %l3
    clr %l4
    clr %l5
    mov 1, %l3
    mov 3, %l4
mov 0, %l5

test:
    cmp %l3, %l4
    bg exit
    sub %l5, 4, %l5
    set fmt0, %o0
    ld [%fp + %l5], %o1
    call printf
    inc %l3
    ba test
    nop

exit:
    mov 1, %g1
    ta 0

预期值为
5
7
12

但结果值为
5
5
12

我的代码有什么问题?
提前致谢

4

1 回答 1

2

您的堆栈框架太小。使用三个自动单字大小的变量,您需要一个 26 个字的堆栈帧。您程序中的堆栈帧只有 20 个字。

于 2011-10-23T10:36:36.303 回答