.data
a : .long 6
r : .long 0
out : .string "result %d\n"
.text
.global main
fib:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
cmpl $0, %eax #fib(0)=0
je endf
cmpl $1, %eax #fib(1)=1
je endf
decl %eax #eax=n-1
pushl %eax #set arg
call fib #re in ecx
popl %eax #get n-1
decl %eax #eax=n-2
pushl %ecx #save result for n-1
pushl %eax #set arg
call fib #res in ecx
popl %eax # eax=n-2, discard
popl %eax # eax=fib(n-1)
addl %eax, %ecx #fib(n)=fib(n-1)+fib(n+2)
movl %ebp,%esp #Exit
popl %ebp
ret
endf:
movl %eax, %ecx#fib(0) or fib(1) to %ebx
movl %ebp,%esp
popl %ebp
ret
main:
pushl a #stack [a]
call fib #result in %ecx
popl %eax # remove arg to fib
pushl %ecx
pushl $out
addl $8, %esp
xor %eax, %eax
ret
LmRhdGEKICAgICAgICBhIDogLmxvbmcgNgogICAgICAgIHIgOiAubG9uZyAwCiAgICAgICAgb3V0IDogLnN0cmluZyAicmVzdWx0ICVkXG4iCi50ZXh0Ci5nbG9iYWwgbWFpbgpmaWI6CiAgICAgICAgcHVzaGwgJWVicAogICAgICAgIG1vdmwgJWVzcCwgJWVicAogICAgICAgIG1vdmwgOCglZWJwKSwgJWVheAogICAgICAgIGNtcGwgJDAsICVlYXggI2ZpYigwKT0wCiAgICAgICAgamUgZW5kZgogICAgICAgIGNtcGwgJDEsICVlYXggI2ZpYigxKT0xCiAgICAgICAgamUgZW5kZgogICAgICAgIGRlY2wgJWVheCAjZWF4PW4tMQogICAgICAgIHB1c2hsICVlYXggI3NldCBhcmcKICAgICAgICBjYWxsIGZpYiAjcmUgaW4gZWN4CiAgICAgICAgcG9wbCAlZWF4ICNnZXQgbi0xCiAgICAgICAgZGVjbCAlZWF4ICNlYXg9bi0yCiAgICAgICAgcHVzaGwgJWVjeCAjc2F2ZSByZXN1bHQgZm9yIG4tMQogICAgICAgIHB1c2hsICVlYXggI3NldCBhcmcKICAgICAgICBjYWxsIGZpYiAjcmVzIGluIGVjeAogICAgICAgIHBvcGwgJWVheCAjIGVheD1uLTIsIGRpc2NhcmQKICAgICAgICBwb3BsICVlYXggIyBlYXg9ZmliKG4tMSkKICAgICAgICBhZGRsICVlYXgsICVlY3ggI2ZpYihuKT1maWIobi0xKStmaWIobisyKQogICAgICAgIG1vdmwgJWVicCwlZXNwICNFeGl0CiAgICAgICAgcG9wbCAlZWJwCiAgICAgICAgcmV0CmVuZGY6CiAgICAgICAgbW92bCAlZWF4LCAlZWN4I2ZpYigwKSBvciBmaWIoMSkgdG8gJWVieAogICAgICAgIG1vdmwgJWVicCwlZXNwCiAgICAgICAgcG9wbCAlZWJwCiAgICAgICAgcmV0CgptYWluOgogICAgICAgIHB1c2hsIGEgICNzdGFjayBbYV0KICAgICAgICBjYWxsIGZpYiAjcmVzdWx0IGluICVlY3gKICAgICAgICBwb3BsICVlYXggIyByZW1vdmUgYXJnIHRvIGZpYgogICAgICAgIHB1c2hsICVlY3gKICAgICAgICBwdXNobCAkb3V0CiAgICAgICAgY2FsbCBwcmludGYKICAgICAgICBhZGRsICQ4LCAlZXNwCiAgICAgICAgeG9yICVlYXgsICVlYXgKICAgICAgICByZXQK