Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Float-Parameter per ASM übergeben

  Alt 4. Jun 2008, 17:56
Hier denkst du mal wieder zu kompliziert. Eigentlich willst du doch nur den Extended-Wert auf den Stack schieben, damit du die Funktion aufrufen kannst.
Delphi-Quellcode:
// edx: PExtended
push word ptr [edx + 8] //zuerst gepusht -> liegt am weitesten weg, daher fangen wir hinten an
push [edx + 4]
push [edx]
Damit sollte es klappen.

Übrigens, wegen deines Erstaunens über SizeOf(Extended): Intel verwendet drei Größen für Floats: 4 Byte (Single), 8 Byte (Double = Real) und 10 Byte (Extended). Im Inline-Assembler sprichst du Extended für fld und fst(p) mit TByte an (vermutlich steht das für "ten byte").
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat