関数 "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