Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: ASM-Funktion Verständnisfrage und anpassen

  Alt 25. Nov 2019, 15:39
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;

Geändert von DieDolly (25. Nov 2019 um 15:52 Uhr)
  Mit Zitat antworten Zitat