.globl cadd .type cadd,@function cadd: pushl %ebp movl %esp,%ebp pushl 16(%ebp) addl $0,0(%esp) pushl 8(%ebp) addl $0,0(%esp) popl %eax pushl 0(%eax) pushl 12(%ebp) addl $0,0(%esp) popl %eax pushl 0(%eax) popl %eax addl %eax,0(%esp) popl %eax popl %ecx movl %eax,0(%ecx) pushl 16(%ebp) addl $4,0(%esp) pushl 8(%ebp) addl $4,0(%esp) popl %eax pushl 0(%eax) pushl 12(%ebp) addl $4,0(%esp) popl %eax pushl 0(%eax) popl %eax addl %eax,0(%esp) popl %eax popl %ecx movl %eax,0(%ecx) .L1: leave ret .globl cmult .type cmult,@function cmult: pushl %ebp movl %esp,%ebp pushl 16(%ebp) addl $0,0(%esp) pushl 8(%ebp) addl $0,0(%esp) popl %eax pushl 0(%eax) pushl 12(%ebp) addl $0,0(%esp) popl %eax pushl 0(%eax) popl %eax imull 0(%esp) movl %eax,0(%esp) pushl 8(%ebp) addl $4,0(%esp) popl %eax pushl 0(%eax) pushl 12(%ebp) addl $4,0(%esp) popl %eax pushl 0(%eax) popl %eax imull 0(%esp) movl %eax,0(%esp) popl %eax subl %eax,0(%esp) popl %eax popl %ecx movl %eax,0(%ecx) pushl 16(%ebp) addl $4,0(%esp) pushl 8(%ebp) addl $0,0(%esp) popl %eax pushl 0(%eax) pushl 12(%ebp) addl $4,0(%esp) popl %eax pushl 0(%eax) popl %eax imull 0(%esp) movl %eax,0(%esp) pushl 8(%ebp) addl $4,0(%esp) popl %eax pushl 0(%eax) pushl 12(%ebp) addl $0,0(%esp) popl %eax pushl 0(%eax) popl %eax imull 0(%esp) movl %eax,0(%esp) popl %eax addl %eax,0(%esp) popl %eax popl %ecx movl %eax,0(%ecx) .L2: leave ret .globl main .type main,@function main: pushl %ebp movl %esp,%ebp subl $24,%esp pushl %ebp addl $-8,0(%esp) addl $0,0(%esp) pushl $3 popl %eax popl %ecx movl %eax,0(%ecx) pushl %ebp addl $-8,0(%esp) addl $4,0(%esp) pushl $4 popl %eax popl %ecx movl %eax,0(%ecx) pushl %ebp addl $-16,0(%esp) addl $0,0(%esp) pushl $6 popl %eax popl %ecx movl %eax,0(%ecx) pushl %ebp addl $-16,0(%esp) addl $4,0(%esp) pushl $3 popl %eax popl %ecx movl %eax,0(%ecx) pushl $.L4 call printStr addl $4,%esp pushl %ebp addl $-24,0(%esp) pushl %ebp addl $-16,0(%esp) pushl %ebp addl $-8,0(%esp) call cadd addl $12,%esp pushl %ebp addl $-24,0(%esp) addl $0,0(%esp) popl %eax pushl 0(%eax) call printInt addl $4,%esp pushl %ebp addl $-24,0(%esp) addl $4,0(%esp) popl %eax pushl 0(%eax) call printInt addl $4,%esp pushl $.L5 call printStr addl $4,%esp pushl %ebp addl $-24,0(%esp) pushl %ebp addl $-16,0(%esp) pushl %ebp addl $-8,0(%esp) call cmult addl $12,%esp pushl %ebp addl $-24,0(%esp) addl $0,0(%esp) popl %eax pushl 0(%eax) call printInt addl $4,%esp pushl %ebp addl $-24,0(%esp) addl $4,0(%esp) popl %eax pushl 0(%eax) call printInt addl $4,%esp .L3: leave ret .align 4 .L4: .string "addition test" .align 4 .L5: .string "multiplication test"