Thema: Delphi mod mit Int64

Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: mod mit Int64

  Alt 26. Jan 2007, 14:46
Der Compiler speichert int64-Werte einfach als 2 integer hintereinander, also
a:=4 (mit a vom int64) wird zu
Delphi-Quellcode:
asm
  mov dword ptr [esp], 4 ;low integer
  mov dword ptr [esp+4], 0 ;high integer
end;
Ein a mod b läfut allerdings so ab, dass er nur zwei 32bit (also nomrale) integer werte in eax<--a und edx<--b schiebt, und dann normal div macht. Dabei legt die ALU den ganzzahliegen Anteil des Ergebnisses in eax und den Rest in edx.

Anders gesagt, das mod ist eine integrierte Funktion der CPU. Diese läuft auf 32bit-CPUs auch nur in 32bit
Und du hast Recht, du müsstest dein modulo zu Fuß erledigen, so wie du es hingeschrieben hast.


Edit: Nee, Kommando zurück. Laut Debugger macht der ja etwas anderes, der hat eine Funktion namens _llmod.... und sieht alles ganz gut aus




[/delphi]
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat