Frage zu einen Source Code



  • Hallo ich habe hier zu eine Frage und zwar:

    Wofür ist: TEST AL,AL
    Wieso wird dieser Teil nicht aufgerufen vom Debugger:

    0040148E |> \E8 35FFFFFF CALL abc.004013C8

    WENN

    ich hier einen Breakpoint setze

    0040147E |. E8 45CE0300 CALL abc.0043E2C8

    0040147E |. E8 45CE0300 CALL abc.0043E2C8
    00401483 |. 84C0 TEST AL,AL
    00401485 |. 74 07 JE SHORT abc.0040148E
    00401487 |. E8 04FFFFFF CALL abc.00401390
    0040148C |. EB 05 JMP SHORT abc.00401493
    0040148E |> E8 35FFFFFF CALL abc.004013C8
    00401493 |> C70424 705444>MOV DWORD PTR SS:[ESP],abc.00445470
    0040149A |. E8 25680200 CALL abc.00427CC4
    0040149F |. B8 00000000 MOV EAX,0
    004014A4 |. C9 LEAVE
    004014A5 \. C3 RETN



  • test r, r (2x der gleiche Operand) setzt Flags entsprechend des Registerinhalts.
    Ist das so getestete Register 0, wird zB. das Zero-Flag gesetzt, was in diesem Fall zB. auch als naechstes abgefragt wird. Das ist auch der haeufigste Einsatzzweck.

    Im vorliegenden Fall wuerde die genannte Funktion zB. nicht aufgerufen, wenn al != 0 ist. ... ... In den FAQ gibt es immer noch tolle Anfaengertutorials... 😉


Anmelden zum Antworten