Was ist der Sinn von LEA EAX, [EAX]?
LEA EAX, [EAX]
Traf ich diese Anweisung in eine Binärdatei kompiliert mit Microsoft C-compiler. Es klar nicht ändern können, den Wert von EAX. Dann, warum ist es dort?
- ist die Optimierung auf?
- Ja, das ist eine release-version von binary, also Optimierung sollte auf. Auch bin ich mit ollydbg für die Demontage.
- Hast du die entsprechende C-Anweisung für dieses Schmuckstück?
- wie könnte es?
- Nein. Und dies ist nicht ein einmaliger Fall. Ich habe gesehen, ein oder zwei andere, wie LEA EBX, [EBX] in der gleichen binary. In der Tat, ich ' m Blick auf die Letzte gerade jetzt auf meinem Bildschirm. Ollydbg zeigt den op-code für diese (LEA EBX, [EBX] das ist) als "8D9B 00000000"
- Wenn das ein 64-bit-Binär-dann ist es nur eine null, die oberen 32 bits
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein
NOP
.Folgenden sind typcially als
NOP
. Sie alle tun die gleiche Sache, aber Sie führen dazu, dass Computer-code von unterschiedlicher Länge. Je nach Ausrichtung Anforderung einer von Ihnen ausgewählt wird:NOP
, denn es stellt eine Daten-Abhängigkeit vonEAX
. Moderne CPUs erkennen diese spezifische Muster, wie eineNOP
und die Daten ignorieren Abhängigkeit, aber einige ältere CPUs vielleicht nicht.nop
ist0x90
, das ist das gleiche wiexchg eax, eax
Vom diese Artikel:
Dies ist also nur eine Art von NOP, erscheint rechts vor dem Ziele der jmp-Anweisungen, um Sie auszurichten.
Interessanterweise kann man erkennen, den compiler von der charakteristischen Natur solcher Anweisungen.
NOP
ist nur die halbe Antwort (doch, seltsam, die ausgewählt werden). Zu erklären, warum Sie wollen würde, um zu tun, dieseNOP
s ist die vollständige Antwort. Gut gemacht.In der Tat nicht ändern, den Wert von EAX. Soweit ich verstehe, es ist identisch in der Funktion:
Hast du es in optimierten code, oder ein nicht optimierter code?
/O2
?