Mögliche Duplizieren:
x86 Assembly - ‘testl’ eax against eax?Der Punkt Test% eax% eax
Ich bin sehr sehr neu in Assembler-Programmierung, und ich versuche zur Zeit um die Baugruppe zu lesen Sprache aus einer Binärdatei generiert. Ich habe über
test %eax,%eax
oder test %rdi, %rdi
laufen, etc. etc. Ich bin sehr verwirrt, was dies tut. Sind die Werte in %eax, %eax
nicht gleich? Was testet es? Ich habe irgendwo gelesen, dass es die AND
Operation macht ..... aber da sie den gleichen Wert haben, würde es nicht einfach %eax
zurückgeben?
Das folgende ist nur ein Beispiel, wo ich diese Verwendung gefunden:
400e6e: 85 c0 test %eax,%eax
400e70: 74 05 je 400e77 <phase_1+0x23>
Ich dachte je
springt, wenn die beiden Werte gleich sind, verglichen werden ...... gut, weil %eax
gut ist, selbst, In welcher Situation würden wir nicht springen?
Ich bin ein Anfänger zu Programmierung im Allgemeinen, also würde ich es sehr schätzen, wenn jemand mir das erklären könnte. Vielen Dank!
Da einige Antworten etwas unklar erscheinen, möchte ich darauf hinweisen, dass 'TEST' andere Flaggen außer' ZF' aktualisiert. Siehe Referenz der Befehlssatz. – Jester
@Jester behoben (in meiner Antwort), tut mir leid. –
Ein weiteres mögliches Duplikat: [Was macht die 'test'-Anweisung?] (Http://stackoverflow.com/q/6002079) – jww