waht
authoralex.s <[email protected]>
Thu, 15 Jul 2010 10:16:52 +0000 (15 18:16 +0800)
committeralex.s <[email protected]>
Thu, 15 Jul 2010 10:16:52 +0000 (15 18:16 +0800)
recursive.s [new file with mode: 0644]

diff --git a/recursive.s b/recursive.s
new file mode 100644 (file)
index 0000000..dd7a297
--- /dev/null
@@ -0,0 +1,29 @@
+.section .data
+.section .text
+.globl _start
+.globl factorial
+
+_start:
+pushl $4
+call factorial
+addl $4, %esp
+movl %eax, %ebx
+movl $1, %eax
+int $0x80
+
+.type factorial, @function
+factorial:
+pushl %ebp
+movl %esp, %ebp
+movl 8(%ebp), %eax
+cmpl $1 %eax
+je end_factorial
+decl %eax
+pushl %eax
+call factorial
+movl 8(%ebp), %ebx
+imull %ebx, %eax
+end_factorial:
+movl %ebp, %esp
+popl %ebp
+ret