Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: RotateLeft: 32-Bit Integer rotieren

  Alt 17. Aug 2011, 10:02
Hallo,

Der erste Parameter der Funktion wird in eax/ax/al gespeichert, der Zweite in edx/dx/dl.
D.h.

Zahl = eax
Bits = dl

rol erfordert:
rol [register], cl
xchg tauscht die Werte von 2 8-Bit Registern.
Also tausche ich den Wert von dl (Bits) mit cl und rolle dann eax (Zahl) mit cl (Bits).

Das Ergebnis einer Funktion steht in eax. Also brauche ich nichts weiter zu machen.
Delphi-Quellcode:
function rol(Zahl: Integer; Bits: Byte): Integer;
asm
  // eax := Zahl;
  // dl := Bits;
  xchg cl,dl // cl := dl;
  rol eax, cl // Result := eax rol cl;
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (17. Aug 2011 um 10:04 Uhr)
  Mit Zitat antworten Zitat