.file "sum64Win.s" .text .globl sum sum: # int sum(const int *a, int n) # a == %rcx, n == %rdx 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, %edx # compare n with 0 jle L1 # if result <= 0 goto L1 (le == less or equal) addl (%rcx), %eax # sum += *a addq $4, %rcx # a += 4 subl $1, %edx # n -= 1 jmp L0 # goto L0 L1: movq %rbp, %rsp # SP := FP popq %rbp # restore old FP ret