Hallo, wieso erzeugt der folgende Code eine Fehlermeldung beim kompilieren? int main() { __asm__(" xor ebx,ebx mov al,1 int 0x80 "); } Die Fehlermeldung lautet $ gcc -static exit_call2.c -o exit_call2 exit_call2.c:3:13: missing terminating " character exit_call2.c: In function `main': exit_call2.c:5: error: Syntaxfehler before "xor" exit_call2.c:9:5: missing terminating " character Im Internet habe ich verschiedene Darstellungsformen für Inline-ASM gefunden, aber ich habe bisher keine Möglichkeit gefunden, diese in meinen gcc (gcc 3.3.2 20031218 (Gentoo Linux 3.3.2-r5, propolice-3.3-7) einzubinden?! Any hints? Danke und Gruß, Werner.
Am Son, 2004-05-02 um 00.12 schrieb Werner Schalk:
Hallo,
wieso erzeugt der folgende Code eine Fehlermeldung beim kompilieren?
int main() {
__asm__("
xor ebx,ebx mov al,1 int 0x80
");
}
Weil Du nicht die entsprechende Syntax angewand hast. Erstens verlangt gcc die AT&T-Syntax, die besagt, dass es %ebx und nicht ebx heißt. Und dann will gcc von Dir noch ein Paar Sachen wissen, wie Ein- und Ausgaberegister und die veränderten Register. Schau Dir mal die Seite 20ff. von http://www.linux-kernel.de/appendix/ap03.pdf an. Da steht das beschrieben. philipp
participants (2)
-
Philipp Otte
-
Werner Schalk