Eine 32-Bit-CPU/FPU, bzw. der 32-Bit Teil einer CPU, für die 32-Bit-Programme, kann natürlich nur mit 32-Bit-Integern rechnen.
Bei Fließkommazahlen bis 64/80 Bit.
Wenn ihr mal in die CPU-Ansicht schauen würdet, dann hättet ihr bemerkt, daß 64-Bit-Integeroperationen in
Win32 nur "emuliert" werden, indem die Rechenoperationen auf zwei 32-Bit-Integer aufgeteilt werden, was natürlich nicht wirklich schnell sein kann.
PS: schaut mal in die System.pas und haltet ausschau nach
Delphi-Quellcode:
{ 64-bit Integer helper routines }
{$IF defined(CPU386)}
procedure __llmul;
procedure __lldiv;
procedure __lludiv;
procedure __llmod;
procedure __llmulo;
procedure __lldivo;
procedure __llmodo;
procedure __llumod;
procedure __llshl;
procedure __llushr;
{$ENDIF}
Das sint praktisch die Funktionen, welche Delphi/C++ intern benutzt, wenn man *, div, mod, shl usw. auf Int64 oder UInt64 anwendet.
Ja, via SSE/MMX gibt es auch in
Win32 ein paar 64- und 128-Bit-Register, aber diese sind ja nicht für einen Wert vorgesehn, sondern stellen eine Technik zur Stream-/Parallelverarbeitung mehrerer gleichartiger Berechnungen dar.