.text .globl _algebra _algebra: pushl %ebp movl %esp, %ebp subl $8, %esp movl 8(%ebp), %edx movl %edx, %eax sall $2, %eax addl %edx, %eax addl %eax, %eax leal (%eax,%edx), %ecx movl 12(%ebp), %edx movl %edx, %eax addl %eax, %eax addl %edx, %eax sall $2, %eax addl %edx, %eax leal (%ecx,%eax), %eax leal 7(%eax), %ecx movl 16(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax leal (%ecx,%eax), %eax leave ret .globl _swap _swap: pushl %ebp movl %esp, %ebp subl $24, %esp movl 8(%ebp), %eax movl (%eax), %eax movl %eax, -12(%ebp) movl 12(%ebp), %eax movl (%eax), %edx movl 8(%ebp), %eax movl %edx, (%eax) movl 12(%ebp), %edx movl -12(%ebp), %eax movl %eax, (%edx) leave ret .cstring LC0: .ascii "string: '%s'\12\0" .text .globl _print_string _print_string: pushl %ebp movl %esp, %ebp pushl %ebx subl $20, %esp call L7 "L00000000001$pb": L7: popl %ebx movl 8(%ebp), %eax movl %eax, 4(%esp) leal LC0-"L00000000001$pb"(%ebx), %eax movl %eax, (%esp) call _printf addl $20, %esp popl %ebx leave ret .cstring LC1: .ascii "The first string. I think.\0" .align 2 LC2: .ascii "This second string. So there.\0" .align 2 LC3: .ascii "x,y,z = %i,%i,%i, algebra(x,y,z)=%i \12\0" .text .globl _main _main: pushl %ebp movl %esp, %ebp pushl %ebx subl $68, %esp call L13 "L00000000002$pb": L13: popl %ebx leal LC1-"L00000000002$pb"(%ebx), %eax movl %eax, -16(%ebp) leal LC2-"L00000000002$pb"(%ebx), %eax movl %eax, -20(%ebp) movl $4, -24(%ebp) movl $6, -28(%ebp) movl $8, -32(%ebp) leal -28(%ebp), %eax movl %eax, 4(%esp) leal -24(%ebp), %eax movl %eax, (%esp) call _swap movl -28(%ebp), %edx movl -24(%ebp), %ecx movl -32(%ebp), %eax movl %eax, 8(%esp) movl %edx, 4(%esp) movl %ecx, (%esp) call _algebra movl %eax, -12(%ebp) movl -28(%ebp), %edx movl -24(%ebp), %ecx movl -12(%ebp), %eax movl %eax, 16(%esp) movl -32(%ebp), %eax movl %eax, 12(%esp) movl %edx, 8(%esp) movl %ecx, 4(%esp) leal LC3-"L00000000002$pb"(%ebx), %eax movl %eax, (%esp) call _printf cmpl $10, -12(%ebp) jle L9 movl -16(%ebp), %eax movl %eax, (%esp) call _print_string jmp L11 L9: movl -20(%ebp), %eax movl %eax, (%esp) call _print_string L11: movl $0, %eax addl $68, %esp popl %ebx leave ret .subsections_via_symbols