Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Parameter in FPU laden (Assembler) (https://www.delphipraxis.net/211936-parameter-fpu-laden-assembler.html)

mwilms 24. Nov 2022 07:24

Parameter in FPU laden (Assembler)
 
Hallo!

Ich habe ein Problem mit dem Laden eines Parameters in den FPU Stack. Vielleicht weiß jemand eine Lösung.

Delphi-Quellcode:

procedure GetDouble(DB1: double); stdcall;
var
  TestDBL: double;
asm
  FLD DB1;    // wird nicht compiliert
  FLD TestDBL; // wird compiliert !
end;

procedure SendDouble;
var
  DB1: double
begin
  DB1 := 1.0;
  GetDouble(DB1);
end;
Vielen Dank für Eure Hilfe!

Klaus01 24. Nov 2022 07:37

AW: Parameter in FPU laden (Assembler)
 
.. kannst Du
Delphi-Quellcode:
procedure GetDouble(DB1: double); stdcall;
in
Delphi-Quellcode:
procedure GetDouble(const DB1: double); stdcall;
ändern, funktioniert es dann?

Grüße
Klaus

Der schöne Günther 24. Nov 2022 07:45

AW: Parameter in FPU laden (Assembler)
 
Ich habe zwar keine Ahnung was der Code tun soll, aber bei mir kompiliert er anstandslos 🤷

mwilms 24. Nov 2022 08:34

AW: Parameter in FPU laden (Assembler)
 
Danke für die Antworten.

An Klaus: Compiliert Delphi 10.4 bei Dir auch anstandslos?

Habe gerade keinen Zugriff auf mein Delphi, werde zuhause deinen Tipp ausprobieren.

Welche Projekt Einstellungen habt ihr? Irgendetwas besonderes?

(Inline Assembler in einer Pascal Procedure läßt sich bei mir auch nicht einbinden. Muß asm in Proceduren auslagern.)

Grüße

Markus

Der schöne Günther 24. Nov 2022 09:08

AW: Parameter in FPU laden (Assembler)
 
Mir fällt grade auf, dass Win32 geht, aber bei Win64 bekommt man auf deiner angekreideten Zeile tatsächlich ein

E2116 Invalid combination of opcode and operands

markus888 24. Nov 2022 09:16

AW: Parameter in FPU laden (Assembler)
 
Zitat:

Zitat von mwilms (Beitrag 1515261)
Ich habe ein Problem mit dem Laden eines Parameters in den FPU Stack.


Welches Problem?

Meine Empfehlung:

FLD qword ptr DB1

Klaus01 24. Nov 2022 10:24

AW: Parameter in FPU laden (Assembler)
 
..hier ist auch eine Diskussion FLD mit Windows 64
https://stackoverflow.com/questions/...uction-x64-bit

Ja, Dein Code compiliert bei mir auch nur mit Windows 32.
Grüße
Klaus

markus888 24. Nov 2022 12:56

AW: Parameter in FPU laden (Assembler)
 
Zitat:

Zitat von Klaus01 (Beitrag 1515273)
Ja, Dein Code compiliert bei mir auch nur mit Windows 32.

Aha spannend, ich nehme jetzt mal die Nachricht war an mich gerichtet.

Ausgehend von deinem Link, habe ich mir das mal angesehen.
Hab bis jetzt nur mit 32 Bit asm angewendet.

So hat es funktioniert:
Code:
procedure test(t, y:double);stdcall;
var x:double;
asm
  movq x, xmm0
  FLD qword ptr x
end;
Da müsste man sich natürlich etwas mit der Thematik beschäftigen.

himitsu 24. Nov 2022 13:01

AW: Parameter in FPU laden (Assembler)
 
Zitat:

Zitat von Klaus01 (Beitrag 1515273)
Ja, Dein Code compiliert bei mir auch nur mit Windows 32.

Richtig, weil es dort keine FPU gibt.

OK, die FPU als EinzelChip gibt es schon ewig nicht mehr, aber als LogicEinheit war Sie in der CPU (32 Bit) dennoch integriert.
Unter 64 Bit macht das Mathematische die CPU nun selbst.

markus888 24. Nov 2022 13:31

AW: Parameter in FPU laden (Assembler)
 
Zitat:

Zitat von himitsu (Beitrag 1515283)
Unter 64 Bit macht das Mathematische die CPU nun selbst.

Also ist das im 32 Bit Modus dann nur eine Simulation?
Grundsätzlich kann man ja Werte in die FPU laden, wie man beim Debuggen sehen kann - was bedeutet das dann?
Immerhin nutzt die FPU 80Bit und simd Register meines wissens nur 64.
Die Aussage erscheint mir daher seltsam.

Hast du zufällig einen Link zu einer Doku bezüglich 64 Bit mit FPU?

Edit:
@himitsu, ich glaube du verwechselst da was. Die Befehle die du meinst haben mit 64 Bit nichts zu tun und können im 32 Bit Modus genauso genutzt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz