.file "sum64.s" .text .globl sum sum: # int sum(const int *a, int n) # a == %rdi, n == %rsi pushq %rbp # save frame pointer in stack movq %rsp, %rbp # new FP points to old FP in stack movl $0, %eax # sum := 0 L0: # loop cmpl $0, %ecx # compare n with 0 jle L1 # if result <= 0 goto L1 (le = less or equal) addl (%rdi), %eax # sum += *a addq $4, %rdi # a += 4 subl $1, %esi # n -= 1 jmp L0 # goto L0 L1: movq %rbp, %rsp # SP := FP popq %rbp # restore old FP ret