C 将数组值传入本地寄存器?

C 将数组值传入本地寄存器?,c,arrays,assembly,sparc,C,Arrays,Assembly,Sparc,如果我有这样的东西: void func (unsigned long arr[]) { } 在汇编中,如何将arr[0]和arr[1]中的值放入本地寄存器并将arr传回 这就是我所尝试的: func: save %sp, -(92 + 8) & -8, %sp ! save 8 bytes st %i0, [%fp-8] sll %g0, 2, %l0 add %l0, -8, %l0 ld [%fp+%l0], %l0

如果我有这样的东西:

void func (unsigned long arr[]) {

}
在汇编中,如何将arr[0]和arr[1]中的值放入本地寄存器并将arr传回

这就是我所尝试的:

func:
    save %sp, -(92 + 8) & -8, %sp    ! save 8 bytes

    st %i0, [%fp-8]

    sll %g0, 2, %l0
    add %l0, -8, %l0
    ld [%fp+%l0], %l0                ! value of arr[0] should be in %l0


    ..........                       ! something similar to load arr[1]


    ld [%fp-8], %i0

这不管用。谁能告诉我我做错了什么吗?

哦。这是一份作业。如何获取arr[0]和arr[1]的值?
无符号长arr[]
作为参数时与
无符号长*arr
相同。我知道这就是我存储在%fp-8的原因。但我不知道如何访问%fp-4处的值这里只有一个参数,指针。指针指向arr[0],arr[1]位于下一个单词中。%fp-4中没有什么有趣的内容。如果您想将arr传递回,您必须返回它,但是您的函数是无效的。C是传递值。。。您无法更改调用方的参数。。。这是基本的东西。当你说“pass arr back out”时,你真的是想更改数组的内容吗?精确是有帮助的。