von c auf assembler prozeduren zugreifen?
-
hi,
also ich hab ne kernel.c
und ne startup.asm
und die linke ich dann zusammen zu kernel.binalso ich hab in startup.asm ne prozedur und würd in der kernel.c gern darauf zugreifen... wie funzt des?
-
Mixing Assembly and C <--- ein tut dazu ich hoffe es hilft dir
-
Guck ma ein bisschen weiter vorne im Forum. Ich hab diese Frage auch mal gestellt und da waren gute Antworten. Aber trotzdem ein kleines Beispiel:
kernel.c
extern void neustart(); int main() { neustart(); }
startup.asm
BITS 16 jmp start GLOABAL _neustart EXTERN _main start: jmp _main ;ruft die main() funktion des Kernel's auf _neustart: db 0EAh dw 0000h dw 0FFFFh
Ich hoffe das dir das ein bisschen weiterhilft...
-
hi, danke das ist perfekt
aber ich will ne prozedur:
test PROC parameter
....
ENDP
aufrufen... geht das dann so:
test(parameter); ????
-
Ja das geht so.
Du musst aber ein paar Dinge beachten:
1. Beim assembler muss man einschalten, dass er zwischen Groß/Kleinschreibung unterscheidet.
2. Du musst die Aufruf-Konvention (_cdecl) beachten. Diese besagt, dass der Aufrufer den Stack aufräumt und (wichtig!) dass die parameter von recht nach links auf den Stack gepusht werden.
-
hi,
ok, kannst du mal ein kleines beispiel zeigen?
-
welchen Compiler nutzt du den? Für den gcc kann ich dir folgenden Link geben
-
also ich verwende nasm 0.98 und gcc 2.952
kannst du mir jetzt mal ein beispiel zeigen wie ich von c ne assembler prozedur mit parametern aufrufe?