/* gcc -Wall -S -o sf.s sf.c */ extern char *src(int); extern void spill(void); extern void foo(char*,char*,char*,char*,char*,char*,char*,char*); int main(void) { switch (src(-1)[0]) { case 'a': { char *a = src(0); char *b = src(1); char *c = src(2); char *d = src(3); char *e = src(4); char *f = src(5); char *g = src(6); char *h = src(7); spill(); foo(a,b,c,d,e,f,g,h); break; } case 'b': { char *a = src(8); char *b = src(9); char *c = src(10); char *d = src(11); char *e = src(12); char *f = src(13); char *g = src(14); char *h = src(15); spill(); foo(a,b,c,d,e,f,g,h); break; } } return 0; }