Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi brauche hilfe mit asm code (https://www.delphipraxis.net/169272-brauche-hilfe-mit-asm-code.html)

Wishmaster 9. Jul 2012 00:00

brauche hilfe mit asm code
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi

wie die überschrift schon sagt ich brauche hilfe mit nem asm code!
ich habe leider keine Ahnung von Assembler.
der Code funzt zwar in win32 aber nicht in win64!

Ich weiß dass das Mischen von Assembler-Code mit Pascal-Code wird nicht in 64-Bit-Anwendungen unterstützt.
so mir wäre natürlich eine Pure Pascal übersetzung am liebsten. :wink:

das wäre wahnsinnig nett wenn mir da jemand weiterhelfen konnte.

ich habe den entsprechenden code mit {$IFDEF CPUX86} ausgeklammert



Thx.

Namenloser 9. Jul 2012 02:57

AW: brauche hilfe mit asm code
 
Der ASM-Code in der Unit ist dazu da, die korrekte Aufrufkonvention für die Funktionen aus der DLL herzustellen. Es wird nur das Register ECX zur Parameterübergabe verwendet, der Rest landet auf dem Stack – das sieht nach thiscall aus. Der Delphi-Compiler kennt diese Aufrufkonvention leider nicht, deshalb lässt sich das nicht in PurePascal umsetzen.

Aber selbst wenn es ginge, würde dir das nichts nützen, weil es grundsätzlich unmöglich ist, 32bit-DLLs in 64bit-Programme einzubinden.

himitsu 9. Jul 2012 03:37

AW: brauche hilfe mit asm code
 
Jupp, 32 Bit und 64 Bit arbeiten halt nicht zusammen, was schon alleine am Prozessraum (Arbeitsspeicher) liegt, bzw. an den Pointern, welche nicht kompatibel sind.
Egal in welche Richtung.


Es gibt da also nur ein paar Lösungen:

- du brauchst eine 64 Bit-Version der DLL

- du nutzt eine 32 Bit/64 Bit-Brücke

Das Einzige wo es keinerlei Probleme gibt, ist ein OutOfProcess-Server, denn da kümmert sich Windows um die Datenübergabe,
wobei die DLL ja wo anders geladen wird und nicht im eigenen Prozess. (der DLL-Host ist dir eventuell schonmal im Taskmanager aufgefallen)

Du könntest dir notfalls auch selber einen 32 Bit-Host für die DLL erstellen und stellst dann die Verbindung zu deinem Programm via IPC her.

Wishmaster 9. Jul 2012 06:44

AW: brauche hilfe mit asm code
 
hi

danke!

ich schreibe an eine Compo wo ich verschiedene Encoder benutze eg. (lame_enc.dll, LibFlac.dll,...)
in verbindung mit bass.dll, die einzige Lib die ich nich für Win64 kompilieren konnte war die LibTTA

Zitat:

- du brauchst eine 64 Bit-Version der DLL
ja ich weiß dass! ich glaube aber nicht dass es dafür eine 64-Bit version von gibt

mir ging es eigentlich nur darum dass ich die Lib unter Win64 kompilieren kann
und sollte es mal eine 64-bit version geben möchte ich diese dan auch laden können.

leider gibt es nicht viele informationen über, wie man die einzelne Lib's in delphi benutzt :(


Thx.

himitsu 9. Jul 2012 08:58

AW: brauche hilfe mit asm code
 
Ich hätte ja fast gesagt, daß es unter 64 Bit egal ist und man es ohne Assembler bestimmt direkt aufrufen könnte, da es dort ja angeblich nur noch eine Aufrufkonvention gibt.


Aber in dem Wiki-Link stehen doch Zwei drin?

Die Liste sieht für mich etwas unvollständig aus ... Wo sind denn z.B. stdcall und savecall, oder heißen die dort nur anders?


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