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:
Vielen Dank für Eure Hilfe!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; |
AW: Parameter in FPU laden (Assembler)
.. kannst Du
Delphi-Quellcode:
in
procedure GetDouble(DB1: double); stdcall;
Delphi-Quellcode:
ändern, funktioniert es dann?
procedure GetDouble(const DB1: double); stdcall;
Grüße Klaus |
AW: Parameter in FPU laden (Assembler)
Ich habe zwar keine Ahnung was der Code tun soll, aber bei mir kompiliert er anstandslos 🤷
|
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 |
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 |
AW: Parameter in FPU laden (Assembler)
Zitat:
Welches Problem? Meine Empfehlung: FLD qword ptr DB1 |
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 |
AW: Parameter in FPU laden (Assembler)
Zitat:
Ausgehend von deinem Link, habe ich mir das mal angesehen. Hab bis jetzt nur mit 32 Bit asm angewendet. So hat es funktioniert:
Code:
Da müsste man sich natürlich etwas mit der Thematik beschäftigen.
procedure test(t, y:double);stdcall;
var x:double; asm movq x, xmm0 FLD qword ptr x end; |
AW: Parameter in FPU laden (Assembler)
Zitat:
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. |
AW: Parameter in FPU laden (Assembler)
Zitat:
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. |
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