Könnte jemand __declspec (nackt) bitte erklären?

8

Ich untersuche die Portierung einer Skript-Engine, die für Windows auf Linux geschrieben wurde; Es ist für Winamps Visualisierungsplattform AVS. Ich bin mir nicht sicher, ob das überhaupt möglich ist. Von dem was ich sagen kann, nimmt der Code die Adressen der C-Funktionen nseel_asm_atan und nseel_asm_atan_end und speichert sie innerhalb einer Tabelle, auf die sie während der Codeausführung verweisen kann.

Ich habe mir die MS-Dokumentation angesehen, aber ich bin mir nicht sicher, was __declspec(naked) wirklich tut. Was ist Prolog und Epilog Code in der Dokumentation erwähnt? Ist das mit Windows-Aufrufkonventionen verbunden? Ist das tragbar? Kennen Sie Linux-basierte Beispiele mit ähnlichen Techniken?

%Vor%     
Scott 11.06.2010, 09:00
quelle

1 Antwort

5

Grundsätzlich erstellt der Funktionsprolog einen Stack-Frame für lokale Variablen und der Epilog kümmert sich darum, ihn zu bereinigen. Dies wird normalerweise automatisch vom Compiler erledigt. Wenn Sie __declspec(naked) verwenden, liegt es an Ihnen, diesen Stack-Frame einzurichten, damit Sie flexibler arbeiten können.

Es gibt viele Referenzen: hier , hier , auch hier und mehr.

Der GNU gcc-Compiler unterstützt auch nackte, aber anscheinend nicht für x86: Suche nach "nackt" in der Seite (Ich habe nicht versucht zu sehen, ob es auf x86 funktioniert)

    
Unknown 12.06.2010 11:49
quelle