martillo@mit-athena.ARPA (Joaquim Martillo) (08/17/84)
A few years ago, I was dared to write a fib routine with as few instructions of pdp 11 machine code as possible. I believe I wrote a routine of seven or eight instructions. Recently, the problem came up again and the routine I wrote took 9 instructions. Here is the routine and a c-language caller (so that it can be run on a vax). Can anyone do better? Compile as cc fib.c _fib.s -o fib /* fib.c */ extern int input, output; extern fib(); main() { while(1) { printf("Enter Fib Value: "); if( scanf("%d", &input) < 1 ) { exit(); } fib(); printf("Result is %d\n", output); } } /* _fib.s */ .data .comm _input,4 .comm _output,4 .text .align 1 .globl _fib .align 2 _fib: .word 0 clrl r1 movl _input, r0 jsb fib ret fib: decl r0 ; 1 bleq L0 ; 2 movl r0, -(sp) ; 3 jsb fib ; 4 jsb fib ; 5 movl (sp)+, r0 ; 6 brb L1 ; 7 L0: incl r1 ; 8 movl r1, _output ; Just preset for C routine L1: rsb ; 9