AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ASM Inline code x64

Ein Thema von venice2 · begonnen am 13. Feb 2022 · letzter Beitrag vom 16. Feb 2022
Antwort Antwort
Seite 2 von 4     12 34      
venice2
(Gast)

n/a Beiträge
 
#11

AW: ASM Inline code x64

  Alt 14. Feb 2022, 16:08
Danke für das Interesse..
Video im Archiv meine Cloud meldet leider Error 504

So wie ich das sehe läuft hier einiges falsch beim Kompilieren.
DCU's sind in unterschiedlichen Ordnern.
Und was soll das mit ASM bei 32Bit!

Ich kann die Anwendungen Fehlerfrei kompilieren aber nicht mit der Abhängigkeit oder über die Projektgroup.
Möchte herausfinden warum das so ist!

Geändert von venice2 (18. Feb 2022 um 10:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: ASM Inline code x64

  Alt 14. Feb 2022, 16:45
Also doch die DCUs für 32 und 64 Bit im selben Verzeichnis


Ich denke mal die Abhängigkeiten verwenden den gleichen Compiler, wie er grade kompiliert wird.
Es kommt ja auch als Meldung, dass es der DCC64 ist.

Somit kannst du nur Abhängigkeiten mit dem gleichen Ziel nutzen.

Und warum ist deine 64-Bit-Anwendung von der 32-Bit abhängig?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (14. Feb 2022 um 16:53 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#13

AW: ASM Inline code x64

  Alt 14. Feb 2022, 16:48
Also doch die DCUs für 32 und 64 Bit im selben Verzeichnis
Bitte?

Verzeichnis 1 = ...\MyPhone64_SOP\_src\_dcu
Verzeichnis 2 = ...\MyPhone64_SOP\SOP\_src\_dcu

ist bei dir das selbe? Definitiv nicht!
Kann man das an den hochgeladenen Bildern nicht erkennen?

Geändert von venice2 (14. Feb 2022 um 16:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: ASM Inline code x64

  Alt 14. Feb 2022, 16:55
Hatte geguckt und keinen Unterschied gesehn

[add] Ich weiß, dass der selbe Compiler genommen wird, egal ob Abhängigkeit nur eine Config für 32 Bit besitzt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (14. Feb 2022 um 16:58 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#15

AW: ASM Inline code x64

  Alt 14. Feb 2022, 17:00
Hatte geguckt und keinen Unterschied gesehn
Zitat:
Und warum ist deine 64-Bit-Anwendung von der 32-Bit abhängig?
Weil die 32Bit Anwendung 32Bit DLL's verwaltet bzw. damit arbeitet.

Die 64Bit Anwendung schickt über WM_COPYDATA Befehle an die 32Bit Anwendung so das diese mit den 32Bit DLL's arbeiten kann.
Bekanntlich vertragen sich 64Bit Anwendungen nicht mit 32Bit DLL's.

Damit die 64Bit Anwendung korrekt funktioniert muß vorher die 32Bit kompiliert werden (falls dort etwas geändert wurde)
Und ohne die 32Bit Anwendung funktioniert die 64Bit nicht da hier eine Abhängigkeit zu dieser besteht siehe WM_COPYDATA!

Zitat:
[add] Ich weiß, dass der selbe Compiler genommen wird, egal ob Abhängigkeit nur eine Config für 32 Bit besitzt.
Dann liegt hier das Problem begraben.
Der Compiler sollte schon erkennen können ob innerhalb einer Projektgroup Unterschiedliche Konfigurationen 32/64Bit vorliegen.
Iczh kann diese ja alle einzeln kompilieren warum dann nicht auch in einer gruppe. Also Alle!

Geändert von venice2 (14. Feb 2022 um 17:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: ASM Inline code x64

  Alt 14. Feb 2022, 17:04
Dann arbeite doch einfach mit BuildGruppen.

oder im BeforeBuild eine Prüfung (if not exist oder so) und abbrechen, wenn nicht da/aktuell.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#17

AW: ASM Inline code x64

  Alt 14. Feb 2022, 17:08
Dann arbeite doch einfach mit BuildGruppen.
Es gibt viele Möglichkeiten inklusive einzelner Kompilierung aber darum geht es nicht.
Meine frage war nicht welche Möglichkeiten man noch hat sondern warum die von mir aufgezeigten nicht funktionieren.

Es ist unlogisch eine Option.. Alle Projekte zu kompilieren zur Verfügung zu stellen wenn es nicht funktioniert (Siehe Video)

Und warum können Abhängigkeiten nicht in einem Durchgang kompiliert werden letztendlich ist es nichts anderes als..
Kompiliere erst dies und dann das.

Sorge dafür das SOP.exe aktuell ist und kompiliere dann die 64Bit-EXE.

Zitat:
Es geht um die von der IDE bereit gestellten Funktionen (Möglichkeiten)
Abhängigkeiten hinzuzufügen sowie eine komplette Projektgruppe zu erstellen.
Wenn beides nicht funktioniert wie hier gezeigt was soll das ganze dann?
Wenn der Compiler in einer Projektgroup nicht erkennen kann das 32 und 64Bit Verwendung finden was soll dann der Kram.
Das ist ein Fehler des Compiler und oder der IDE.. und wenn dem so ist sollte man das schnellstens beheben.

Geändert von venice2 (14. Feb 2022 um 17:39 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: ASM Inline code x64

  Alt 15. Feb 2022, 08:53
Danke für das Interesse..
Video im Archiv meine Cloud meldet leider Error 504

So wie ich das sehe läuft hier einiges falsch beim Kompilieren.
DCU's sind in unterschiedlichen Ordnern.
Und was soll das mit ASM bei 32Bit!

Ich kann die Anwendungen Fehlerfrei kompilieren aber nicht mit der Abhängigkeit oder über die Projektgroup.
Möchte herausfinden warum das so ist!
Ich habe mir das Video angesehen.
Meine Frage dazu ist:
Ist die gezeigte uMain.pas mit den Assembler-Quelltext Bestandteil des MyPhone64.exe Projektes oder von SOP.exe?
Ich vermute vom SOP.exe (Release Win32).

Ich kann das Verhalten nicht ganz erklären, aber wie du auch im Video siehst, wird bei aktivierte Abhängigkeit von MyPhone64.exe zu SOP.exe zuerst der dcc64 aufgerufen, wenn du "Erzeugen" auf MyPhone64.exe aufrufst.
Erst dann wird in Folge der passende dcc32 für SOP.exe aufgerufen.
Da der inline Assembler-Quelltext nicht unter 64-Bit kompiliert, schlägt dir der erste Fehler entgegen.
Alles andere sind nur Folgefehler, weil nicht ordnungsgemäß geparst werden kann.

Wenn du das SOP.exe-Projekt so umbaust, dass es theoretisch unter 64-Bit kompilieren würde, dann könnte es funktionieren.

Code:
Checking project dependencies...
Building SOP.dproj (Release, Win64)
brcc32 command line for "SOP.vrc"
  c:\delphi\sydney\bin\cgrc.exe -c65001 SOP.vrc -foSOP.res
dcc64 command line for "SOP.dpr"
  c:\delphi\sydney\bin\dcc64.exe -$D0 -$L- -$Y- --no-config -B -Q -TX.exe -AGenerics.Collections=System.Generics.Collections;
  Generics.Defaults=System.Generics.Defaults;WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DRELEASE
  -E.\Win64\Release -Ic:\delphi\sydney\lib\Win64\release\DE;c:\delphi\sydney\lib\Win64\release;"\\NAS\Nutzer_Doku\User\Eigene
  Dateien\Embarcadero\Studio\21.0\Imports";c:\delphi\sydney\Imports;C:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64;
  c:\delphi\sydney\include;c:\Projekte\Komponenten\develop\Finetech_VC;c:\Projekte\Komponenten\develop\Finetech_C;
  c:\Projekte\Komponenten\develop\Finetech_Design;c:\Projekte\Komponenten\develop\Finetech_Dialog;
  c:\Projekte\Komponenten\develop\Finetech_ElfSectionReader;c:\Projekte\Komponenten\develop\Finetech_ElfSectionReader\Pse;
  c:\Projekte\Komponenten\develop\Finetech_Public;c:\Projekte\Komponenten\develop\Finetech_Raize;c:\Projekte\Komponenten\develop\Finetech_Serial;
  c:\Projekte\Komponenten\develop\Finetech_SpaceNav;c:\Projekte\Komponenten\develop\Resources;C:\Delphi\Jedi\jcl\lib\d27\win64;
  C:\Delphi\Jedi\jcl\source\include;c:\Delphi\RaizeKonopka\Lib\RX10.4\Win64;c:\Delphi\FastMM;c:\Delphi\FastReport\LibD27x64;
  C:\Delphi\Jedi\jvcl\lib\D27\win64;C:\Delphi\Jedi\jvcl\common;C:\Delphi\Jedi\jvcl\Resources;"C:\Delphi\VirtualTreeview\Packages\RAD Studio
  10.4\Win64\Release";C:\Projekte\Komponenten\develop\Lib\D27\Win64\Release -LEC:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\Win64 
  -LNC:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64 -NU.\Win64\Release -NSSystem;Xml;Data;Datasnap;Web;Soap;
  -Oc:\delphi\sydney\lib\Win64\release;"\\NAS\Nutzer_Doku\User\Eigene Dateien\Embarcadero\Studio\21.0\Imports";c:\delphi\sydney\Imports;
  C:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64;c:\delphi\sydney\include;c:\Projekte\Komponenten\develop\Finetech_VC;
  c:\Projekte\Komponenten\develop\Finetech_C;c:\Projekte\Komponenten\develop\Finetech_Design;c:\Projekte\Komponenten\develop\Finetech_Dialog;
  c:\Projekte\Komponenten\develop\Finetech_ElfSectionReader;c:\Projekte\Komponenten\develop\Finetech_ElfSectionReader\Pse;
  c:\Projekte\Komponenten\develop\Finetech_Public;c:\Projekte\Komponenten\develop\Finetech_Raize;c:\Projekte\Komponenten\develop\Finetech_Serial;
  c:\Projekte\Komponenten\develop\Finetech_SpaceNav;c:\Projekte\Komponenten\develop\Resources;C:\Delphi\Jedi\jcl\lib\d27\win64;
  C:\Delphi\Jedi\jcl\source\include;c:\Delphi\RaizeKonopka\Lib\RX10.4\Win64;c:\Delphi\FastMM;c:\Delphi\FastReport\LibD27x64;
  C:\Delphi\Jedi\jvcl\lib\D27\win64;C:\Delphi\Jedi\jvcl\common;C:\Delphi\Jedi\jvcl\Resources;"C:\Delphi\VirtualTreeview\Packages\RAD Studio
  10.4\Win64\Release";C:\Projekte\Komponenten\develop\Lib\D27\Win64\Release -Rc:\delphi\sydney\lib\Win64\release\DE;c:\delphi\sydney\lib\Win64\release;
  "\\NAS\Nutzer_Doku\User\Eigene Dateien\Embarcadero\Studio\21.0\Imports";c:\delphi\sydney\Imports;
  C:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64;c:\delphi\sydney\include;c:\Projekte\Komponenten\develop\Finetech_VC;
  c:\Projekte\Komponenten\develop\Finetech_C;c:\Projekte\Komponenten\develop\Finetech_Design;c:\Projekte\Komponenten\develop\Finetech_Dialog;
  c:\Projekte\Komponenten\develop\Finetech_ElfSectionReader;c:\Projekte\Komponenten\develop\Finetech_ElfSectionReader\Pse;
  c:\Projekte\Komponenten\develop\Finetech_Public;c:\Projekte\Komponenten\develop\Finetech_Raize;c:\Projekte\Komponenten\develop\Finetech_Serial;
  c:\Projekte\Komponenten\develop\Finetech_SpaceNav;c:\Projekte\Komponenten\develop\Resources;C:\Delphi\Jedi\jcl\lib\d27\win64;
  C:\Delphi\Jedi\jcl\source\include;c:\Delphi\RaizeKonopka\Lib\RX10.4\Win64;c:\Delphi\FastMM;c:\Delphi\FastReport\LibD27x64;
  C:\Delphi\Jedi\jvcl\lib\D27\win64;C:\Delphi\Jedi\jvcl\common;C:\Delphi\Jedi\jvcl\Resources;"C:\Delphi\VirtualTreeview\Packages\RAD Studio
  10.4\Win64\Release";C:\Projekte\Komponenten\develop\Lib\D27\Win64\Release -Uc:\delphi\sydney\lib\Win64\release\DE;c:\delphi\sydney\lib\Win64\release;
  "\\NAS\Nutzer_Doku\User\Eigene Dateien\Embarcadero\Studio\21.0\Imports";c:\delphi\sydney\Imports;
  C:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64;c:\delphi\sydney\include;c:\Projekte\Komponenten\develop\Finetech_VC;
  c:\Projekte\Komponenten\develop\Finetech_C;c:\Projekte\Komponenten\develop\Finetech_Design;c:\Projekte\Komponenten\develop\Finetech_Dialog;
  c:\Projekte\Komponenten\develop\Finetech_ElfSectionReader;c:\Projekte\Komponenten\develop\Finetech_ElfSectionReader\Pse;
  c:\Projekte\Komponenten\develop\Finetech_Public;c:\Projekte\Komponenten\develop\Finetech_Raize;c:\Projekte\Komponenten\develop\Finetech_Serial;
  c:\Projekte\Komponenten\develop\Finetech_SpaceNav;c:\Projekte\Komponenten\develop\Resources;C:\Delphi\Jedi\jcl\lib\d27\win64;
  C:\Delphi\Jedi\jcl\source\include;c:\Delphi\RaizeKonopka\Lib\RX10.4\Win64;c:\Delphi\FastMM;c:\Delphi\FastReport\LibD27x64;
  C:\Delphi\Jedi\jvcl\lib\D27\win64;C:\Delphi\Jedi\jvcl\common;C:\Delphi\Jedi\jvcl\Resources;"C:\Delphi\VirtualTreeview\Packages\RAD Studio
  10.4\Win64\Release";C:\Projekte\Komponenten\develop\Lib\D27\Win64\Release -CC -NBC:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64 
  -NHC:\Users\Public\Documents\Embarcadero\Studio\21.0\hpp\Win64 -NO.\Win64\Release SOP.dpr
[dcc32 Error] SOP.dpr(21): E1025 Unsupported language feature: 'ASM'
[dcc32 Warning] SOP.dpr(23): W1011 Text after final 'END.' - ignored by compiler
Failed
Elapsed time: 00:00:00.3

Geändert von TiGü (15. Feb 2022 um 09:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: ASM Inline code x64

  Alt 15. Feb 2022, 09:11
ganz einfacher Test:
  • neues VCL-Projekt / Projektgruppe
  • dort ins FormCreate ein ShowMessage(SizeOf(Pointer).ToString);
  • weiteres Projekt hinzu
  • da Win64 hinzufügen und aktivieren
  • die Abhängigkeit zum ersten Projekt einrichten
  • nun das letzte Projekt kompilieren
  • jetzt im Ausgabeverzeichnis nach der ersten EXE suchen und starten
= wird in Debug/Win64 gefunden und zeigt 8 statt 4, obwohl es im Projekt nur das Profil für Win32 gibt.

Ich dachte erst, die Abhängigkeit liegt in der DPROJ und übernimmt so (ausversehn) die Config des Aufrufers.
In der DPROJ steht oben ja <Platform Condition="'$(Platform)'==''">Win32</Platform> , also diese Einstellung wird nur genommen, wenn nicht von außen vorgegeben,
aber es kommt aus der GROUPPROJ und da könnte Delphi/InlineCompiler es anders/richtig machen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Feb 2022 um 09:18 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#20

AW: ASM Inline code x64

  Alt 15. Feb 2022, 11:21
Zitat:
Ich vermute vom SOP.exe (Release Win32).
Ja.
Obwohl es zwei uMain gibt.
Aber jede für sich im eigenen Root incl. der erzeugten DCU.

Zitat:
Da der inline Assembler-Quelltext nicht unter 64-Bit kompiliert, schlägt dir der erste Fehler entgegen.
Hier darf aber kein Fehler auftreten denn SOP.exe muß mit dcc32 kompiliert werden.
Da ist die IDE bzw. der Compiler anscheinend zu dumm zu erkennen das es hier um 32Bit bzw.. eine Kombination von 32/64Bit geht.

In VS(Visual Studio) kann ich mehrere Konfigurationen festlegen x86/x64 usw.. dort wird jeweils der korrekte Compiler beim Kompilieren ausgeführt.
Nur mal so nebenbei.

Zitat:
Wenn du das SOP.exe-Projekt so umbaust, dass es theoretisch unter 64-Bit kompilieren würde, dann könnte es funktionieren.
Meine Vermutung ist ganz einfach das die Reihenfolge wie die Projekte kompiliert werden nicht stimmt bei aktivierter Abhängigkeit.
Erst muß diese und dann das aufgerufenen Projekt kompiliert werden. Das scheint aber nicht so zu sein.
Wenn ich doch weiß das mein Hauptprogramm ohne die Abhängigkeit nicht funktioniert dann muß logischer weise erst diese erstellt werden damit
das Hauptprogramm überhaupt funktioniert. Aber bitte mit dem richtigen Compiler.

Es ist doch nicht der Sinn des Programmierers Fehler beim erstellen von Konfigurationen für die Kompilierung der IDE\Compiler für Delphi auszubügeln
wenn hier solche Sachen auftreten das weder eine Abhängigkeit noch das erstellen einer Projektgroup verschiedener Builds (Konfigurationen) auftreten\nicht funktionieren.

Wie ich schon sagte..
Ich kann jedes Projekt eigenständig erstellen und es Kompiliert Fehlerfrei.
Aber nicht auf den oder die aufgezeigten von der IDE bereitgestellten Möglichkeiten.
Warum stellt man diese zur Verfügung wenn sie nicht funktionieren?

Ich hatte ja schon gefragt wie ich es umbauen könnte.
Leider kam diesbezüglich noch kein Vorschlag siehe..
Delphi-Quellcode:
procedure ClearPendingExceptions;
asm
  FNCLEX
end;
Scheint ja als eigene Procedure nicht zu funktionieren.
Nur warum funktioniert dann meine Rgb2Gray Funktion wenn "asm inline" angeblich unter 64Bit nicht funktioniert.
Sehr unverständlich das ganze.

Zitat:
ganz einfacher Test:
Danke! Obwohl ich jetzt nicht erkenne was du damit jetzt aussagen willst.
Das es falsch bzw. richtig ausgeführt wird in deinem Test?

Aus meiner Sicht läuft hier definitiv etwas ganz gehörig schief!

Geändert von venice2 (15. Feb 2022 um 12:04 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 17:47 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