.file "fact3.s" .section .rodata .STR0: .string "The factorial of 6 is %d\n " .text .globl main main: pushl %ebp movl %esp, %ebp addl $-16, %esp pushl $6 popl %edx movl %edx, -4(%ebp) pushl $1 popl %edx movl %edx, -8(%ebp) WHILE1: pushl $1 movl -4(%ebp), %edx pushl %edx popl %ebx popl %edx xor %eax, %eax cmp %ebx, %edx setl %al pushl %eax popl %edx cmp $0, %edx je WHILEXIT1 movl -8(%ebp), %edx pushl %edx movl -4(%ebp), %edx pushl %edx popl %ebx popl %edx imul %ebx, %edx pushl %edx popl %edx movl %edx, -8(%ebp) movl -4(%ebp), %edx pushl %edx pushl $1 popl %ebx popl %edx subl %ebx, %edx pushl %edx popl %edx movl %edx, -4(%ebp) jmp WHILE1 WHILEXIT1: movl -8(%ebp), %edx pushl %edx pushl $.STR0 call printf addl $16, %esp movl $0, %eax movl %ebp, %esp popl %ebp ret /* Code generated by stack-based version of compiler */