-1

関数 "int addarray(int n, int * array)" である x86-64 アセンブリ プログラムを作成しようとしています。最初の引数は配列の長さで、2 番目は配列へのポインタです。配列の要素を合計して返すことになっています。ここに私がこれまでに持っているコードがありますが、なぜ機能しないのかわかりません。

.text
.globl addarray
.type   addarray, @function  

addarray:
    movq    $0, %rdx
    movq    $0, %rax
while:
    cmpq    %rdx, %rdi
    jle afterw

    movq    %rdx, %rcx
    imulq   $8, %rcx
    addq    %rsi, %rcx

    addq    %rcx, %rax

    addq    $1, %rdx
    jmp while
afterw:
    ret
4

1 に答える 1