0

最小のint配列を見つけるアセンブリプログラムを作成する必要があります(Cからポインターとしてプログラムに供給されます)

誰かがそれを行う方法を教えてもらえますか?または、少なくともアセンブラで配列を格納/アクセスする方法は?

通常、変数は連続したバッファによってアクセスされます。

subcc %i0, 2, %l0

しかし、配列を使ってそれを行う方法がわかりません。

4

2 に答える 2

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             !
于 2012-01-05T22:17:55.253 に答える
0

C式arr[i]では実際には。と同等であることを思い出して*(arr + i)ください。

配列の値にアクセスするには、そのアドレスを計算する必要があります-それはarr + i * sizeof(int)です。次にldst命令を使用して読み取りまたは書き込みを行うことができます。

于 2012-01-05T15:16:15.780 に答える