C
lolla schrieb:
Hallo,
macht dieser Code sinn?
test eax, eax
jge Irgendwo
Beim JGI muss dass SF-Flag == OF-Flag sein. SF ist nach test immer 0, und OF wird nur gesetzt, wenn das Vorzeichen von AND eax, eax von eax unterschiedlich ist, was natürlich nicht der Fall ist?!
Ich bin verwirrt.
SF ist das Vorzeichen des Ergebnisses, die zugrunde liegende Operation bei test ist eine und-Verknüpfung (und das Ergebnis dieser Opeartion der Inhalt von eax selbst) - folglich ist SF genau dann gesetzt, wenn eax negativ ist, und nur dann ist SF != OF (da OF nach dieser Operation nie gesetzt sein wird). mithin wird der Sprung bei nichtnegativem eax ausgeführt (jump if greater or equal). Statt test eax, eax könntest du auch schreiben: and eax, eax oder or eax,eax oder cmp eax,0 oder sub eax,0