AGB  ·  Datenschutz  ·  Impressum  







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

brauche hilfe mit asm code

Ein Thema von Wishmaster · begonnen am 9. Jul 2012 · letzter Beitrag vom 9. Jul 2012
Antwort Antwort
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#1

brauche hilfe mit asm code

  Alt 9. Jul 2012, 01:00
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.

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

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



Thx.
Angehängte Dateien
Dateityp: rar LibTTA.rar (33,3 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: brauche hilfe mit asm code

  Alt 9. Jul 2012, 03:57
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: brauche hilfe mit asm code

  Alt 9. Jul 2012, 04:37
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#4

AW: brauche hilfe mit asm code

  Alt 9. Jul 2012, 07:44
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: brauche hilfe mit asm code

  Alt 9. Jul 2012, 09:58
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?
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:25 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