2012-01-05 42 views
0

我必須編寫一個彙編程序,它會查找最小的整數(從C作爲指針輸入到程序中)如何在彙編程序(SPARC)中查找整數的最小值和最大值?

任何人都可以告訴我該怎麼做?或者至少如何在彙編中存儲/訪問數組?

通常,變量可以通過連續的緩衝器來訪問,例如, :

subcc %i0, 2, %l0 

但我沒有線索如何與數組做。

回答

0

在C表達式arr[i]中的Rebember實際上相當於*(arr + i)

要訪問數組中的值,您需要計算它的地址 - 它是arr + i * sizeof(int)。然後你可以使用ld,st指令來讀或寫。

0

我已經成功地做到這在某種程度上是這樣的:

.global findminmax  ! 
.proc 4    ! 
       ! 
findminmax:   ! 
    save %sp, -96, %sp ! 
    ld [%i0], %l0  ! 
    mov %l0, %l2  ! 
    mov %l0, %l3  ! 
       ! 
loop:    ! 
    subcc %i1, 1, %l0 ! 
    bneg end  ! 
    nop    ! 
       ! 
    ld [%i0], %l1  ! 
       ! 
    subcc %l2, %l1, %l0  ! 
    bneg newmax   ! 
    nop    ! 
       ! 
    subcc %l1, %l3, %l0  ! 
    bneg newmin   ! 
    nop    ! 
       ! 
back:   ! 
    add %i0, 4, %i0  ! 
    sub %i1, 1, %i1  ! 
    ba loop   ! 
    nop    ! 
end:    ! 
    st %l2, [%i2]  ! 
    st %l3, [%i3]  ! 
    ret    ! 
    restore   ! 
       ! 
newmax:    ! 
    mov %l1, %l2  ! 
    ba back   ! 
    nop    ! 
newmin:    ! 
    mov %l1, %l3  ! 
    ba back   ! 
    nop    ! 
相關問題