Lokale Variablen ermitteln und initialisieren



  • Hallo,

    wie kann ich alle lokalen Variablen einer Funktion ermitteln? Ich würde gerne für alle Lokalen Variablen ein MemSet machen.

    In __LOCAL_SIZE steht ja die Größe der lokalen Variablen. Es kann jedoch nur in naked-functions für den prolog verwendet werden.

    Wie komme ich an die lokalen Variablen?



  • Wie wäre es, wenn du wie alle anderen Programmierer einfach memset für die Variablen aufrufst anstelle von einem Assembler-Hack? 😃



  • /rant/ schrieb:

    Wie wäre es, wenn du wie alle anderen Programmierer einfach memset für die Variablen aufrufst anstelle von einem Assembler-Hack? 😃

    Ja, schon klar^^. Es ist eigentlich auch mehr das Interesse. Wie spreche ich denn generell die Localenvariablen an? Meines Wissens nach doch über ebp-"x". Aber wie ermittle ich die Gesamtgröße alle lokalen Variablen?



  • Die lokalen Variablen liegen zwischen ebp und esp. Genauer gesagt, zwischen ab ebp-4 (inklusive) bis esp (exklusive).

    Lokale Variablen, die in Registern gehalten werden, musst du natürlich irgendwie anders initialisieren. Überhaupt ist die Idee lokale Variablen so zu initialisieren nicht sehr schlau...



  • Lüttmoor schrieb:

    Die lokalen Variablen liegen zwischen ebp und esp. Genauer gesagt, zwischen ab ebp-4 (inklusive) bis esp (exklusive).

    Lokale Variablen, die in Registern gehalten werden, musst du natürlich irgendwie anders initialisieren. Überhaupt ist die Idee lokale Variablen so zu initialisieren nicht sehr schlau...

    Nunja, es ging mir eigentlich vorrangig um den Test. Die Variablen so zu initialisieren ist nicht so dumm wie du denkst. Ich habe das Ganze angedacht für den Delphi Inline Assembler. In Delphi können lokale Varialben nämlich nicht direkt mit einem Wert initialisiert werden und man muss somit für jede Variable eine Zuweisung vornehmen ...



  • FrEEzE2046 schrieb:

    Nunja, es ging mir eigentlich vorrangig um den Test. Die Variablen so zu initialisieren ist nicht so dumm wie du denkst. Ich habe das Ganze angedacht für den Delphi Inline Assembler. In Delphi können lokale Varialben nämlich nicht direkt mit einem Wert initialisiert werden und man muss somit für jede Variable eine Zuweisung vornehmen ...

    Bei Variablen kann es so sein, dass sie nicht unbedingt auf dem Stack landen. Alles abhängig von der eingestellten Optimierungsstufe beim Compiler. Man kann nicht sagen, dass die lokalen Variablen immer auf dem Stack sind. Die eine oder andere wird vom Compiler in CPU Registern abgelegt, die andere "wegoptimiert".


Anmelden zum Antworten