That's with the GNU tools, without asm(), and without proper declarationof printf, as is my tendency. I don't actually return an int either, do I?LAAETTR.

In other words, if you know the push sequence of your C compiler'sfunction calls, you don't need asm("");. x86 Gcc is "push last declaredfirst, return in EAX". Plan 9 guys, not surprisingly, seem to prefer tokeep C as C, and asm as asm. I encountered this while trying to buildLinux 1.2.13 with current GNU tools. It breaks on changes in GNU Casm()'s. Rather a silly thing to break on, eh?

I don't think this is much less clear than the : "=r" $0; stuff, if atall. This thing didn't take as long to code as it did to construct thispost. Perhaps the C-labels-in-asms optimizes better. I doubt if it's bymuch, or if it's worth it.

Oops. I didn't include asmlink.h in the above, except as a commentin asmlink.S. Here it is by itself...

Another easy win from Plan 9 that's related to this but that is not inevidence here is that this thing on Plan 9 could build asmlinkbuild foritself on the fly based on #pragma's in the headers that simply state whatlibrary they are the header for. This to me is so obviously an improvementto the usual state of affairs, an ornate system of dead-ends, as to bedepressing. The guys that wrote UNIX don't do such things to themselvesanymore.