Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   GR32 3.0 - 64-Bit nicht möglich? (https://www.delphipraxis.net/212011-gr32-3-0-64-bit-nicht-moeglich.html)

Alter Mann 2. Dez 2022 07:17

GR32 3.0 - 64-Bit nicht möglich?
 
Hallo,
leider bekomme ich die GR32_R230.bpl nicht kompiliert(64-Bit).
Fehlermeldung:
Code:
[dcc64 Fehler] GR32_PolygonsAggLite.pas(838): E2107 Operandengröße stimmt nicht überein
Delphi-Quellcode:
...
@LoopStart:                              //Zeile 837 
        MOVZX  R9D, [R10 + 4 * R8].QWORD //<- Hier
...
Gibt es eine bekannte Lösung oder geht 64-Bit grundsätzlich nicht?

Bernhard Geyer 2. Dez 2022 07:28

AW: GR32 3.0 - 64-Bit nicht möglich?
 
Was ist GR32_R230?

Wenn der aus Optimierungsgründen nur 32-Bit Assembler beinhaltet wird kein 64-Bit Compilierung nötig sind.
Für die problematischen Stellen muss man für 64 Bit entweder Pascal-Code verwenden oder 64-Bit Assembler-Code

Dafür sind auch entsprechende Compiler-Defines definiert
https://docwiki.embarcadero.com/RADS...ten_Assemblers

jaenicke 2. Dez 2022 07:53

AW: GR32 3.0 - 64-Bit nicht möglich?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1515762)
Was ist GR32_R230?

Das ist die Graphics32 Bibliothek.

Zitat:

Zitat von Bernhard Geyer (Beitrag 1515762)
Wenn der aus Optimierungsgründen nur 32-Bit Assembler beinhaltet wird kein 64-Bit Compilierung nötig sind.

Das ist ja ein 64-Bit Register, insofern muss das schon 64-Bit Code sein.

Auf den ersten Blick finde ich dazu keine Bugmeldung. Es wäre sinnvoll, das zu melden:
https://github.com/graphics32/graphics32/issues

Vielleicht ist das unter 64-Bit z.B. nur für Lazarus getestet worden oder so. Auf jeden Fall gibt es dort offenbar PUREPASCAL Implementierungen, so dass es mit dieser Direktive vermutlich geht.

// EDIT:
Ach ja:
Der Grund, dass es nicht geht, liegt darin, dass R9D die Hälfte des R9 Registers ist und damit ein 32-Bit Wert. Da passt kein QWORD rein. Aufgrund der Kommentare, dass es um die einzelnen RGB-Farbwerte und den Alphakanal geht, vermute ich, dass dort .Byte statt .QWORD stehen muss.

Alter Mann 2. Dez 2022 12:21

AW: GR32 3.0 - 64-Bit nicht möglich?
 
Danke.

Ich habe den Teil
Code:
{$IFNDEF PUREPASCAL}
erste inmal auskommentiert.
Ist Zwar nicht die 'Lösung', aber es läßt sich in 64-Bit kompilieren.

himitsu 2. Dez 2022 12:42

AW: GR32 3.0 - 64-Bit nicht möglich?
 
Emba hat an vielen Stellen keine Lust neues Assembler zu bauen,
drum ist PUREPASCAL wohl nur bei Win32 undefiniert.

Im Win64 ist bei Assembler auch nicht alles möglich, was im Win32 mal ging.



Dennoch wäre hier vorher auch ein
Delphi-Quellcode:
{$IFDEF WIN64}
und anschließendes
Delphi-Quellcode:
{$DFINE
bzw.
Delphi-Quellcode:
{$UNDEF PUREPASCAL}
möglich.
Bzw. nicht PUREPASCAL sondern WIN64 oder Ähnliches prüfen, das was man wirklich meinte.

Alter Mann 2. Dez 2022 13:10

AW: GR32 3.0 - 64-Bit nicht möglich?
 
ne, ne

@jaenicke hat da wohl schon recht wenn man sich das hier anschaut.

Dort steht bei Beschreibung ('DeepL'):
Code:
Im 64-Bit-Modus beträgt die Standardoperationsgröße des Befehls 32 Bit. Die Verwendung des Präfixes REX.R ermöglicht den Zugriff auf zusätzliche Register (R8-R15). Durch die Verwendung des Präfixes REX.W wird der Betrieb auf 64-Bit-Operanden erweitert. Siehe die Übersichtstabelle am Anfang dieses Abschnitts zu Kodierungsdaten und -grenzen.
Da ich aber bei GITHUB keinen Account habe/bisher brauchte, fällt die Sache mit dem issues aus.

Primär geht es mir um GLScene 2.1. Das dort eingebundene GR32 ist aber '2.0.0 alpha'.

TurboMagic 2. Dez 2022 18:56

AW: GR32 3.0 - 64-Bit nicht möglich?
 
Zitat:

Zitat von Alter Mann (Beitrag 1515791)
ne, ne

@jaenicke hat da wohl schon recht wenn man sich das hier anschaut.

Dort steht bei Beschreibung ('DeepL'):
Code:
Im 64-Bit-Modus beträgt die Standardoperationsgröße des Befehls 32 Bit. Die Verwendung des Präfixes REX.R ermöglicht den Zugriff auf zusätzliche Register (R8-R15). Durch die Verwendung des Präfixes REX.W wird der Betrieb auf 64-Bit-Operanden erweitert. Siehe die Übersichtstabelle am Anfang dieses Abschnitts zu Kodierungsdaten und -grenzen.
Da ich aber bei GITHUB keinen Account habe/bisher brauchte, fällt die Sache mit dem issues aus.

Primär geht es mir um GLScene 2.1. Das dort eingebundene GR32 ist aber '2.0.0 alpha'.

Hast du einen Google Account?
m.W. kann man sich damit auch bei GitHub anmelden!

himitsu 2. Dez 2022 19:04

AW: GR32 3.0 - 64-Bit nicht möglich?
 
Sicher?

https://github.com/topics/sign-in-with-google
aber nicht bei sich selber.

Klar, Github gehört ja inzwischen auch Microsoft und nichtmal die eigenen Dienste gehen als Login. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 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