gcc entfernt den Inline-Assembler-Code

Es scheint, als ob gcc 4.6.2 Code entfernt, den es als nicht verwendet für Funktionen ansieht.

test.c
int main(void) {
  goto exit;
  handler:
    __asm__ __volatile__("jmp 0x0");
  exit:
  return 0;
}
Demontage vonmain()
   0x08048404 <+0>:     push   ebp
   0x08048405 <+1>:     mov    ebp,esp
   0x08048407 <+3>:     nop    # <-- This is all whats left of my jmp.
   0x08048408 <+4>:     mov    eax,0x0
   0x0804840d <+9>:     pop    ebp
   0x0804840e <+10>:    ret
Compiler-Optionen

Keine Optimierungen aktiviert, nurgcc -m32 -o test test.c (-m32 weil ich auf einer 64 bit maschine bin).

Wie kann ich dieses Verhalten stoppen?

Bearbeiten: Vorzugsweise mithilfe von Compileroptionen, nicht durch Ändern des Codes.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage