AGB  ·  Datenschutz  ·  Impressum  







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

Assembler Files einbinden

Ein Thema von FrEEzE2046 · begonnen am 9. Dez 2009 · letzter Beitrag vom 11. Jan 2010
Antwort Antwort
Seite 3 von 4     123 4      
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#21

Re: Assembler Files einbinden

  Alt 14. Dez 2009, 14:58
Falls es hilft: Keine Probleme mit TASM 5.0.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#22

Re: Assembler Files einbinden

  Alt 14. Dez 2009, 15:05
Hier eine Version mit MASM, die ohne Probleme von D6 akzeptiert wird.
Code:
TITLE SimpleTest.asm
 
.686P
.XMM
.MODEL FLAT

PUBLIC Proc1
PUBLIC Proc2

.CODE proc1_text
Proc1 PROC
   ; ;
Proc1 ENDP

.CODE proc2_text
Proc2 PROC
   ; ;
Proc2 ENDP

END
  Mit Zitat antworten Zitat
FrEEzE2046

Registriert seit: 25. Aug 2009
27 Beiträge
 
#23

Re: Assembler Files einbinden

  Alt 14. Dez 2009, 15:08
Zitat von gammatester:
Falls es hilft: Keine Probleme mit TASM 5.0.
Ich hab auch kein Probleme mit MASM. Das Problem ist (vermutlich) die Deklaration in Delphi. Sieht bei mir so aus:

Code:
TITLE Test.asm
 
.686P
.XMM
.MODEL FLAT


PUBLIC Proc1
PUBLIC Proc2


.CODE

Proc1 PROC
   ret
Proc1 ENDP

Proc2 PROC
   ret
Proc2 ENDP

END

Delphi-Quellcode:
Unit Test;

interface

procedure Proc1();
procedure Proc2();

implementation

{$LINK Test.obj}

procedure Proc1(); external;
procedure Proc2(); external;

end.

Wenn ich Proc2 in Delphi auskommentiere, dann geht es. Lasse ich es drin:
Code:
Ungenügende Forward- oder External-Deklaration 'Proc2'

Und in C mit dem VS geht das wunderbar. Versteh ich absolut nicht, was da die Ursache ist.


Zitat von gammatester:
Hier eine Version mit MASM, die ohne Probleme von D6 akzeptiert wird.
Ich hab Delphi 5. Es liegt nicht an MASM.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#24

Re: Assembler Files einbinden

  Alt 14. Dez 2009, 15:32
Meine letzte Version mit .CODE proc2_text ist auch mit Delphi5 kompilierbar. Daß es D5 bei Dir nicht packt, liegt dann wohl daran, daß Du nicht das letzte asm benutzt oder geht's damit auch nicht?
  Mit Zitat antworten Zitat
FrEEzE2046

Registriert seit: 25. Aug 2009
27 Beiträge
 
#25

Re: Assembler Files einbinden

  Alt 14. Dez 2009, 15:35
Zitat von gammatester:
Meine letzte Version mit .CODE proc2_text ist auch mit Delphi5 kompilierbar. Daß es D5 bei Dir nicht packt, liegt dann wohl daran, daß Du nicht das letzte asm benutzt oder geht's damit auch nicht?
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?
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#26

Re: Assembler Files einbinden

  Alt 14. Dez 2009, 15:40
Zitat von FrEEzE2046:
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?
Na ja, daß mit dem es klappt aus #22. Deklaration in D5 (die asm/obj-Files heißen bei mit xx.asm und xx.obj, erzeugt mit ml /c XX.ASM)
Delphi-Quellcode:
procedure proc1; external;
procedure proc2; external;
{$link xx.obj}
  Mit Zitat antworten Zitat
FrEEzE2046

Registriert seit: 25. Aug 2009
27 Beiträge
 
#27

Re: Assembler Files einbinden

  Alt 14. Dez 2009, 15:54
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 hat man so Probleme nicht. Kannst du evtl. mal 1-2 Sätze dazu sagen, warum dass hier notwendig ist?
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#28

Re: Assembler Files einbinden

  Alt 14. Dez 2009, 16:34
Zitat von FrEEzE2046:
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!
Masm ohne /Optionen versucht offensichtlich ein EXE zu erzeugen und macht dabei eine COFF-Umwandlung: XX.obj : warning LNK4033: converting object format from OMF to COFF, deshalb mein ml /c

Zitat von FrEEzE2046:
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 hat man so Probleme nicht. Kannst du evtl. mal 1-2 Sätze dazu sagen, warum dass hier notwendig ist?
Nein, weiß nicht warum. Mit TASM gehts ja auch ohne, liegt vielleicht daran daß TASM auch von Borland war. Das mit dem procx_text war 'ne dunkle Erinnerung, MASM-Hilfe schreibt dazu:
Zitat:
Syntax: .CODE [name]

Description:

Starts a code segment (with segment name <name>, if given) and ends the previous segment, if any. Aligns the segment on a 2-byte boundary (.8086, .186, .286) or a 4-byte boundary (.386, .486). The .MODEL directive must precede this directive.

Segment name <name> is an optional parameter that overrides the default segment name. If <name> is not specified, the assembler generates a segment called _TEXT (tiny, small, compact, and flat models) or <modulename>_TEXT (medium, large, and huge models).
Wahrscheinlich schafft's ein (M)ASM-Profi auch viel einfacher.

Gruß Gammatester
  Mit Zitat antworten Zitat
FrEEzE2046

Registriert seit: 25. Aug 2009
27 Beiträge
 
#29

Re: Assembler Files einbinden

  Alt 14. Dez 2009, 17:31
Zitat von gammatester:
Wahrscheinlich schafft's ein (M)ASM-Profi auch viel einfacher.
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 eigentlich ziemlich absurd aus meiner Sicht.
  Mit Zitat antworten Zitat
FrEEzE2046

Registriert seit: 25. Aug 2009
27 Beiträge
 
#30

Re: Assembler Files einbinden

  Alt 21. Dez 2009, 15:34
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?

Code:
TITLE Test.asm
 
.686P
.XMM
.MODEL FLAT


PUBLIC FuncA
PUBLIC FuncB


.CODE FuncA_Code
FuncA PROC
FuncA ENDP


.CODE FuncB_Code
FuncBPROC
FuncBENDP

END
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 21:24 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