[net.lang.c] a

gnu@sun.uucp (John Gilmore) (10/04/84)

Here at Sun we used to write a fair bit of C code with intermixed
assembler code, interrupts jumping into the middle of compiler produced
code, etc.  We stopped doing that because we kept getting burned by
compiler changes -- and rightly so.  The compiler is entitled to make a
lot of assumptions about its environment that JUST AREN'T TRUE if you
are intermixing random non-compiler-generated code or threads-of-control.
The compiler can often generate better code by making MORE such assumptions
as it evolves.

If you really can't stomach writing your low level interrupt handler in
assembler, try inserting

		;	/* Null statement often useful here */
	#asm
	interruptlabel:
	#endasm

or 

		;
		asm("interruptlabel:");

whichever your compiler prefers.  Then, once it works, don't buy any
newer releases of the compiler.