AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Parameter in FPU laden (Assembler)

Parameter in FPU laden (Assembler)

Ein Thema von mwilms · begonnen am 24. Nov 2022 · letzter Beitrag vom 29. Nov 2022
Antwort Antwort
Seite 1 von 2  1 2   
mwilms

Registriert seit: 23. Nov 2022
Ort: Wolfratshausen
37 Beiträge
 
Delphi 10.4 Sydney
 
#1

Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 08:24
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!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 08:37
.. kannst Du
procedure GetDouble(DB1: double); stdcall; in
procedure GetDouble(const DB1: double); stdcall; ändern, funktioniert es dann?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 08:45
Ich habe zwar keine Ahnung was der Code tun soll, aber bei mir kompiliert er anstandslos 🤷
  Mit Zitat antworten Zitat
mwilms

Registriert seit: 23. Nov 2022
Ort: Wolfratshausen
37 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 09:34
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
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 10:08
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
  Mit Zitat antworten Zitat
markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#6

AW: Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 10:16
Ich habe ein Problem mit dem Laden eines Parameters in den FPU Stack.

Welches Problem?

Meine Empfehlung:

FLD qword ptr DB1
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 11:24
..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
Klaus
  Mit Zitat antworten Zitat
markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#8

AW: Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 13:56
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#9

AW: Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 14:01
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#10

AW: Parameter in FPU laden (Assembler)

  Alt 24. Nov 2022, 14:31
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.

Geändert von markus888 (24. Nov 2022 um 14:46 Uhr) Grund: Korrektur
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 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