Zitat:
Da diese Multiplikation in 32-Bit durchgeführt wird
Das merke ich gerade, wo ich mit 64bit kompilieren möchte. Da scheint es PUSH wohl nicht zu geben.
Wenn ich randInt_MT19937 mit Hilfe deiner Kommentare in normalen Delphi-Code umwandle, hat das irgendwelche Nachteile?
Wenn nicht, würde ich das machen.
Delphi-Quellcode:
function randInt_MT19937(Range: LongInt): LongInt;
begin
Result := Range * genrand_MT19937;
end;
function randInt_MT19937(Min, Max: LongInt): LongInt;
begin
Result := randInt_MT19937(Max - Min) + Min;
end;
Diese Funktion schmeiße ich dann raus
Delphi-Quellcode:
function randFloat_MT19937: Double;
const
Minus32: Double = -32.0;
asm
CALL genrand_MT19937
PUSH 0
PUSH EAX
FLD Minus32
FILD qword ptr [ESP]
ADD ESP,8
FSCALE
FSTP ST(1)
end;