-
Forum: Die Delphi-IDE
by FrEEzE2046,
11. Jan 2010
9.0.30729.1
/omf, siehe hier
btw. habe ich in der Vergangenheit ja schon erfolgreich mit MASM32 kompilierte OMF-Objektdateien in Delphi eingebunden. Fragt sich nur, was ich damals anders gemacht habe.
-
Forum: Die Delphi-IDE
by FrEEzE2046,
11. Jan 2010
Delphi treibt mich in den Wahnsinn, daher muss ich diesen Thread noch mal ausgraben.
Habe ein Objekt-File, dass ich mit MASM folgendermaßen kompiliert habe:
ml /c /omf "source.asm"
Das ganze habe ich dann per "{$LINK "Pfad\source.obj"} in Delphi gelinkt und bekomme aber immer die Meldung: "Falsches Dateiformat".
Warum?
-
Forum: Die Delphi-IDE
by FrEEzE2046,
21. Dez 2009
Also:
Der Fehler lag überhaupt nicht bei meinem Assembler-Code bzw. Object-File, sondern an einer ganz anderen Kannte.
Ich hatte als Linker-Ausgabe (in Delphi) C-Objektdateien gewählt.
Aus irgendeinem Grund scheint dieses Feature aber nicht 100% ausgereift zu seien, da es bei meinem Code Probleme bei der Erzeugung dieser C-Objectdateien gab.
Dies wiederum gab die Fehlermeldung aber in...
-
Forum: Die Delphi-IDE
by FrEEzE2046,
21. Dez 2009
Ja, schon gut. Das habe ich doch hier nur schnell exemplarisch hingehauen.
Der Compiler hätte sonst schon gemeckert.
Das Problem ist derweil aber gelöst:
Und zwar hatte ich dem Delphi-Linker mitgeteilt, dass er bitte C-Objekt-Dateien erzeugen soll. Offensichtlich ist dieses Feature eher unausgereift.
-
Forum: Die Delphi-IDE
by FrEEzE2046,
21. Dez 2009
Ob man's glauben mag oder nicht:
Der Fehler ist jetzt schon wieder aufgetreten.
Delphi sagt als Warnung immer:
'Falsche globale Symboldefinition'
bei beiden Funktionen. Dass führt in meinem Entwicklungsprojekt jetzt zu einer Zugriffsverletzung in der dcc50.dll.
Was ist falsch am Code?
TITLE Test.asm
-
Forum: Die Delphi-IDE
by FrEEzE2046,
14. Dez 2009
Danke für deine Antwort. Naja, in NASM schaff ich's halt auch viel einfacher ;-), aber ich bin ja hier zu MASM gezwungen. Ich werde evtl. auch nochmal schauen, ob ich nicht doch 32-Bit OMF-Files erzeugen kann mit NASM - dass habe ich noch nie gebraucht und daher keine Ahnung.
Kann mir jedenfalls nicht vorstellen, dass man für jede Funktion ein neues Code-Segment bedingen muss ... ist...
-
Forum: Die Delphi-IDE
by FrEEzE2046,
14. Dez 2009
mmmh,
also ich hab's jetzt mit /omf zusätzlich kompilieren müssen, da MASM standardmäßig coff-files erzeugt (wenn ich mich nicht irre). Und was soll ich sagen; es geht!
Der einzige Unterschied ist, dass du mehrere Code-Segmente (also zwei) gemacht hast. Aber warum ist dass notwendig?
Ich muss wirklich sagen, dass die Verbindung masm / Delphi durchaus komplizierter ist als c / nasm. Da...
-
Forum: Die Delphi-IDE
by FrEEzE2046,
14. Dez 2009
Was meinst du mit "das letzte ASM"?
Ich benutze den Code, der in meinem letzten Posting steht. Wie hast du es denn in Delphi deklariert?
-
Forum: Die Delphi-IDE
by FrEEzE2046,
14. Dez 2009
Ich hab auch kein Probleme mit MASM. Das Problem ist (vermutlich) die Deklaration in Delphi. Sieht bei mir so aus:
TITLE Test.asm
.686P
.XMM
.MODEL FLAT
PUBLIC Proc1
-
Forum: Die Delphi-IDE
by FrEEzE2046,
14. Dez 2009
Dazu sollte man noch sagen, dass der selbige Code (mit angepasster Parameterabfrage) sich ohne Probleme in C (VC 9) verwenden lässt.
-
Forum: Die Delphi-IDE
by FrEEzE2046,
14. Dez 2009
Danke für deine Hilfe, aber das war natürlich das erste was ich gemacht hatte. Ich kann leider nicht sagen wo ran es liegt.
Dummerweiße zwingt mich dass jetzt dazu MASM zu benutzen und ich stoße dabei auf einige Probleme. Ich habe folgenden Code:
TITLE SimpleTest.asm
.686P
.XMM
.MODEL FLAT
-
Forum: Die Delphi-IDE
by FrEEzE2046,
9. Dez 2009
NASM kann COFF Objektdateien erzeugen, ja. Aber mit dem Compiler-Parameter obj erzeugt man OMF. Ganz sicher, steht auch so in der Command-Line-Hilfe (-hf).
-
Forum: Die Delphi-IDE
by FrEEzE2046,
9. Dez 2009
Okay, mit MASM kompiliert und schon geht's. Irgendwie kann NASM(W) keine 32-Bit OMF-OBJ Dateien erzeugen ... okay, dann danke an alle.
-
Forum: Die Delphi-IDE
by FrEEzE2046,
9. Dez 2009
Die Aufrufkonventionen kenne ich. Müsste bei mir natürlich register sein, ist es aber sowieso by default.
Mein Problem ist, dass er mein object-file anmeckert, weil es angeblich 16 Bit Segmente enthält.
-
Forum: Die Delphi-IDE
by FrEEzE2046,
9. Dez 2009
Ich bekomms einfach nicht hin:
Hab mal ein Test-Szenario erstellt. Sieht folgendermaßen aus:
unit TestUnit;
interface
function Summe(i1, i2 : Integer): Integer;
-
Forum: Die Delphi-IDE
by FrEEzE2046,
9. Dez 2009
Ich wollte auch nicht sagen, dass der Delphi-Compiler Assembler kompilieren kann. Die Antwort, eine Obj.-Datei per extern einzubinden, war die die ich wollte. Ich meinte eigentlich auch lediglich, dass System.pas auch externe (ursprünglich in assembler geschriebene) Routinen einbindet.
-
Forum: Die Delphi-IDE
by FrEEzE2046,
9. Dez 2009
Danke für deine Hilfe. Ich habe aber extra "reines asm" geschrieben, da ich den Inline-Assembler eben NICHT benutzen will.
Dass die Möglichkeit besteht, zeigt - wie bereits erwähnt - die System.pas.
Irgendwie muss das doch möglich sein, dem Linker mitzuteilen, dass da was existiert. Wenn ich die Funktion per extern kennzeichne und den Pfad zu einer aout datei setzte, dann kommt die...
-
Forum: Die Delphi-IDE
by FrEEzE2046,
9. Dez 2009
Hallo,
ich suche eine Möglichkeit reinen Assembler Code in Delphi zu verwenden.
Soll heißen:
Ich habe mehrere reine Assembler Dateien, die verschiedene Routinen enthalten, die ich in Delphi nutzen möchte. Prinzipiell muss ich nur eine Möglichkeit haben die asm-files zu kompilieren (ggf. eben mit nasm) und dem Delphi-Linker mitzuteilen, dass ich ein paar externe Procedures und Functions...