fibonacci program - retrotruestory/M1DEV GitHub Wiki
6/4/2002 By Bill Buzbee
Here's a fibonacci program compiled with my retargeted lcc (using the new a/b register conventions). I still some tuning to do to improve the code generation, but it's pretty close: ; Program start .global _fib .cseg _fib: enter 10 ;int fib(int n) { ; if (n < 2) { ld.16 a,4+12(sp) ldi.16 b,2 cmpb.sge a,b,L2 ; return n; ld.16 a,4+12(sp) br L1 L2: ; return (fib(n-1) + fib(n-2)); ld.16 a,4+12(sp) sub.16 a,1 st.16 (sp+0),a call _fib st.16 -2+12(sp),a ld.16 a,4+12(sp) sub.16 a,2 st.16 (sp+0),a call _fib st.16 -4+12(sp),a ld.16 b,-2+12(sp) copy a,b ld.16 b,-4+12(sp) add.16 a,b L1: leave ret .global _main _main: enter 14 ;int main() { ; int num = 10; ldi.16 a,10 st.16 -2+16(sp),a ; int result = fib(num); ld.16 a,-2+16(sp) st.16 (sp+0),a call _fib st.16 -4+16(sp),a ; printf("Fib %d -> %d\n",num,result); lea a,L5(dp) st.16 (sp+0),a ld.16 a,-2+16(sp) st.16 (sp+2),a ld.16 a,-4+16(sp) st.16 (sp+4),a call _printf ; return(0); ldi.16 a,0 L4: leave ret L5: .defb 70 .defb 105 .defb 98 .defb 32 .defb 37 .defb 100 .defb 32 .defb 45 .defb 62 .defb 32 .defb 37 .defb 100 .defb 10 .defb 0 ; End of program .end