2010-09-29 4 views
10

Ich verwende einen Laufzeit-Debugger.imul Bauanleitung - ein Operand?

EAX: 0000 0023 EDX: 5555 5556

imul edx 

EAX: aaaa AAC2 EDX: 0000 000b

Ich bin völlig verwirrt und kann nicht herausfinden, wie diese mehrfach funktioniert. Was passiert hier? Ich stellt fest, in einem ähnlichen question here dass imul ebx ; result in EDX:EAX Ich verstehe nicht, die EDX: EAX Notation aber:/

Antwort

21

Wenn die Ein-Operanden-Form imul ein 32-Bit-Argument übergeben wird (wie in Ihrem Fall mit EDX) es effektiv bedeutet, EAX * EDX, wobei sowohl EAX als auch EDX 32-Bit-Register sind.

Das Produkt aus zwei 32-Bit-Werten passt nicht unbedingt in 32 Bit: Das vollständige Multiplikationsergebnis kann bis zu 64 Bit dauern. Die hohen 32 Bits der Antwort werden in das Register EDX und die unteren 32 Bits in das Register EAX geschrieben; Dies wird mit der Notation EDX:EAX dargestellt.


Wenn Sie nur die unteren 32 Bits des Ergebnisses wollen, verwenden Sie die 2-Operanden-Form imul; Es läuft schneller und hat keine impliziten Operanden (Sie können also die am besten geeigneten Register verwenden).

imul ecx, esi tut ecx *= esi wie Sie erwarten würden, ohne EAX oder EDX zu berühren. Es ist wie C, wo unsigned x=...;x *= y; die gleiche Breite für das Ergebnis wie die Eingänge hat.

imul hat auch eine sofortige Form: tut ecx = ebx * 1234. Viele Assembler akzeptieren imul ecx, 1234 als short-hand für imul ecx, ecx, 1234.


Diese 32x32 => 32-Bit-Formen der imul Arbeit korrekt mit oder ohne Vorzeichen; die Ergebnisse der Einoperanden mul und imul unterscheiden sich nur in der oberen Hälfte (in EDX), nicht in der unteren Hälfte EAX.

Siehe Intel's instruction reference manual entry for imul.

+0

Was passiert, wenn das Register "imul" "eax" ist? Macht es immer noch das gleiche? Was ist, wenn Sie etwas anderes als 'eax' oder' edx' geben, wie zum Beispiel 'eax'? –

+2

Es gibt viele Formen der Imul-Anweisung. Die Form, die ein einzelnes 32-Bit-Argument (Speicher oder Register) verwendet, gibt immer das Ergebnis im EDX: EAX-Paar zurück. –

Verwandte Themen