Wie funktioniert die x86-ROR Instruktion arbeitet?

Meine EAX - register enthält den xxxxxx9D Wert und ich habe folgenden Assembler code:

C0C8 14 --> ROR AL,14

Mir, es bedeutet, dass die letzten 8 bits der EAX's 32-bit Wert gedreht werden bitweise um 14 mod 8 = 6 Positionen

0x9D = b1001 1101

verwandelt sich in

b0111 0110 = 0x76

Jedoch OllyDbg sagt mir, dass EAX = xxxxxxD9, was bedeutet EAX gedreht wurde bitweise durch 4 bits!

Wo bin ich falsch?

  • Das ist 14 hex 20 dezimal.
  • Für das Protokoll: best-practices für den Ausdruck rotiert in einer compiler-freundliche Weise, die Vermeidung von undefinierten Verhalten: stackoverflow.com/questions/776508/.... Dass die Antwort-code, die Sie erhalten, gcc und clang für die Erstellung eines einzigen ror Unterricht.
Schreibe einen Kommentar