ich spiel grad an einem Programm, bei dem ich folgende Assembler-Funktionen habe:
Code: Alles auswählen
void __declspec(naked) funktion1()
{
__asm CALL hauptFunktion;
}
void __declspec(naked) funktion2()
{
__asm CALL hauptFunktion;
}
void __declspec(naked) hauptFunktion()
{
/* Jetzt liegt ja der Rücksprungwert bei [esp]
Je nachdem, welcher Wert das ist, soll unterschiedlich verfahren werden. */
}
Nach dem Deaktivieren aller Optimierungen lief mein Programm. Aber kann ich die Optimierung auch gezielt abschalten? Ich möchte ja nicht auf alle Optimierungen verzichten.
Alternativ sollte ich meinen Code eventuell auch hierzu umstricken, da das Verfahren oben ja ein ziemliches Rumgehacke ist?!
Code: Alles auswählen
void __declspec(naked) funktion1()
{
__asm PUSH funktion1;
__asm CALL hauptFunktion;
}
void __declspec(naked) funktion2()
{
__asm PUSH funktion2;
__asm CALL hauptFunktion;
}
void __declspec(naked) hauptFunktion(void *caller)
{
// Jetzt kann ich nach dem Wert von caller unterscheiden.
}