inline assembly mit gcc

Hallo!
Sorry für den nichts sagenden Titel aber mir fiel nichts besseres ein.
Ich mochte das hier compilen:
Code:
void myMain( unsigned char *myPointer);

//void test(){
__asm__("myStart:\n"
    "pusha;\n"
    "pushl 0x20(%esp);\n");
__asm__("call *%0;\n" : : "r"(myMain));
//}

void myMain(unsigned char *myPointer)
{
  int i = (int)myPointer;
}

int main(void)
{

  test();
    return 0;
}
jetzt bekomme ich aber die eigenartige Meldung:
Code:
error: expected ')' before ':' token
in Zeile 7 zurück.

wenn ich aber den inline asm krams in eine Funktion schreibe, so wie es mit den Kommentaren angedeutet wurde dann wird alles ohne Fehler kompiliert.

kann mir vielleicht jemand sagen warum das nicht ohne funktion drum herum geht? Und am besten auch noch wie ichs trotzdem so hinbekomme?

Was auch noch schön zu wissen währe:
Kann man den einsprungpunkt auch auf ein inline asm label anstelle von der main() funktion setzen?

mfg xy

PS: Das Problem habe ich mit einem mingw32 compiler unter windows XP
 
Zurück
Oben