mirror of
https://github.com/janishutz/eth-summaries.git
synced 2026-01-13 14:58:30 +00:00
15 lines
649 B
ArmAsm
15 lines
649 B
ArmAsm
swap_and_sum:
|
|
movq %rbx, -16(%rsp) # Save %rbx
|
|
movslq %esi,%rbx # Save i (and extend)
|
|
movq %r12, -8(%rsp) # Save %r12
|
|
movq %rdi, %r12 # Save a
|
|
leaq (%rdi,%rbx,8), %rdi # & a[i] -> %rdi (arg 1)
|
|
subq $16, %rsp # Allocate stack frame
|
|
leaq 8(%rdi), %rsi # & a[i+1] -> %rsi (arg 2)
|
|
call swap
|
|
movq (%r12,%rbx,8), %rax # a[i]
|
|
addq %rax, sum(%rip) # sum += a[i]
|
|
movq (%rsp), %rbx # Restore %rbx
|
|
movq 8(%rsp), %r12 # Restore %r12
|
|
addq $16, %rsp # Deallocate stack frame
|
|
ret |