fork(2) download
  1. .data
  2. a : .long 6
  3. r : .long 0
  4. out : .string "result %d\n"
  5. .text
  6. .global main
  7. fib:
  8. movl 4(%esp), %eax # get arg
  9. cmpl $1, %eax # if x<=1 fib(x)=x
  10. jbe endf
  11. pushl %ebx # save ebx
  12. decl %eax # eax=n-1
  13. pushl %eax # set arg
  14. call fib # res in eax
  15. mov %eax, %ebx # ebx=fib(n-1)
  16. decl (%esp) # arg -= 1
  17. call fib # res in eax
  18. addl $4, %esp # free arg
  19. addl %ebx, %eax #fib(n)=fib(n-1)+fib(n-2)
  20. popl %ebx # restore ebx
  21. endf:
  22. ret
  23.  
  24. main:
  25. pushl a #stack [a]
  26. call fib #result in %eax
  27. pushl %eax
  28. pushl $out
  29. call printf
  30. addl $12, %esp # free all arguments
  31. xor %eax, %eax # return value
  32. ret
  33.  
Success #stdin #stdout 0.01s 1524KB
stdin
Standard input is empty
stdout
result 8