2012-10-26 4 views
9

Ich arbeite an meinem eigenen Kernel mit GCC, und wenn ich C-Funktionen von Asm-Code aufrufen, muss ich add esp,xx selbst tun. Nach einigem Suchen fand ich, dass stdcall eine Microsoft-Erfindung ist und es in GCC nicht verwenden kann. Gibt es einen praktischen Weg, diese Arbeit zu erledigen?Gibt es eine Entsprechung für stdcall in GCC?

+0

Da Sie erwähnt, dass es einen eigenen Kernel ist, habe ich entfernt Verweise auf Linux. –

Antwort

5

Gibt es eine Äquivalenz von Stdcall in Linux?

mein Kernel in einer Linux-Umgebung

Warten, dann ist dies Ihre eigene Kernel oder der Linux-Kernel? Denn wenn es sich um einen eigenen Kernel handelt, ist es kein Linux mehr.

  1. Wenn Sie an Linux arbeiten, sollten Sie bei den regulären Aufrufkonventionen bleiben und Ihre Assembly entsprechend schreiben.

  2. Wenn Sie an einem eigenen Kernel arbeiten, können Sie alles tun, was Sie wollen. GCC und Clang beide Unterstützung stdcall Aufrufkonventionen auf ix86 Prozessoren, zum Beispiel

    #define stdcall __attribute__((stdcall)) 
    

    See: Function Attributes (GCC manual)

+0

Vielen Dank! Ich kompiliere meinen eigenen Kernel mit gcc und jemand sagte, dass es in Linux gcc kein stdcall gibt. Aber es funktioniert gut mit Ihrem Code! – babel92