Clemson University -- CPSC 231 -- Fall 2009 Multiple entry points allows different function names, different parameter lists, default parameters, etc. Example int fn( int a = 1, int b = 2 ){ return( a + b ); } can be written in assembly as .global fn_ab, fn_b, fn, sum fn_ab: mov 1, %o0 /* default first parameter */ fn_b: mov 2, %o1 /* default second parameter */ fn: sum: add %o0, %o1, %o0 /* add parameters and return sum */ retl nop with fn() becoming call fn_ab fn(3) becoming call fn_b after the caller places 3 in %o0 fn(4,6) becoming call fn (or call sum) after the caller places 4 in %o0 and 6 in %o1 so that a driver like this #include int main(){ printf("fn_ab() returns %d\n",fn_ab()); printf("fn_b(3) returns %d\n",fn_b(3)); printf("fn(4,6) returns %d\n",fn(4,6)); printf("sum(5,7) returns %d\n",sum(5,7)); return 0; } will print fn_ab() returns 3 fn_b(3) returns 5 fn(4,6) returns 10 sum(5,7) returns 12 Of course, multiple exit paths are also possible.