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.