.pos 0 irmovl stack, %esp jmp main # sommme(long n, long v[0], long v[1], ...) f: pushl %ebx # save callee-saved registry xorl %eax,%eax # sum = 0 mrmovl 8(%esp),%ecx # n rrmovl %esp,%ebx iaddl 12, %ebx # v loop: isubl 1, %ecx jl end mrmovl (%ebx),%edx # load *v addl %edx,%eax # sum += *v rmmovl %edx, (%ebx) # store *v iaddl 4,%ebx # v++ jmp loop end: popl %ebx # restore callee-saved registry ret # %eax # main main: irmovl 3, %eax pushl %eax # empiler v2 irmovl 2, %eax pushl %eax # empiler v1 irmovl 1, %eax pushl %eax # empiler v0 irmovl 3, %eax pushl %eax # empiler n call f iaddl 16,%esp # depiler les args halt .pos 0x100 n: .long 4 .pos 0x200 stack: