Przykład procedury:
void procedure() {
variable++;
outb( 0x0070, 0x0C );
inb( 0x0071 );
struct STRUCTURE *interrupt = (struct STRUCTURE *) 0x1000;
interrupt -> end = 0;
asm volatile( "iretq" );
}
Jest ona wywoływana w przypadku wystąpienia przerwania zegara czasu rzeczywistego RTC. Problem w tym, że Clang nie zabezpieczył rejestru RAX, którego dopuścił się wykorzystać.
W jaki sposób poinformować kompilator że dla tej procedury należy ze szczególną uwagą zabezpieczyć (PUSH/POP) każdy wykorzystywany rejestr?