Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Dll mit Asm-code

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 15.06.2010, 19:13    Titel: Dll mit Asm-code Antworten mit Zitat

Hallo, kann mir einer mal eine Dll zeigen, wo ein Asm-code drin ist , der 2 Zahlen mit Asm addiert und wieder zurück gibt?
Die 2 Zahlen zum Addieren sollen an die Dll übergeben werden.
Danke.

Wie werden eigentlich Zeiger übergeben an eine Dll, wenn die Dll zb Werte ändern soll , worauf der Zeiger Zeigt.
Und wie weeden Zeiger von einer Dll zurück gegeben.
Danke.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 15.06.2010, 20:46    Titel: Antworten mit Zitat

Ob DLL oder nicht ist eigentlich relativ egal, mal ein Beispiel:

myLib.bas (mit fbc -dll compilieren)
Code:
Declare Function myLibAdd Lib "myLib" Alias "myLibAdd" (ByRef a As Integer, ByRef b As Integer) As Integer
Declare Function myLibChange Lib "myLib" Alias "myLibChange" (c As Integer Ptr) As Integer

Function myLibAdd (ByRef a As Integer, ByRef b As Integer) As Integer Export
   Asm
      mov esi, [a]
      mov eax, [esi]
      
      mov esi, [b]
      mov ebx, [esi]
      
      Add eax, ebx
      
      mov [Function], eax
   End Asm
End Function

Function myLibChange (c As Integer Ptr) As Integer Export
   Asm
      mov esi, [c]
      mov eax, [esi]
      Add eax, 10
      mov [esi], eax
      
      mov [Function], eax
   End Asm
End Function


myLib.bi
Code:
Declare Function myLibAdd Lib "myLib" Alias "myLibAdd" (ByRef a As Integer, ByRef b As Integer) As Integer
Declare Function myLibChange Lib "myLib" Alias "myLibChange" (c As Integer Ptr) As Integer


myProg.bas
Code:
#Include "myLib.bi"

Dim As Integer a, b
Dim As Integer Ptr c = @a

a = 5
b = 7

Print a, b, *c
Print
Print myLibAdd(a, b)
Print
Print a, b, *c
Print
Print myLibChange(c)
Print
Print a, b, *c

Sleep


Macht also keinen Unterschied, bis auf den nötigen Zugriff auf die DLL.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 15.06.2010, 23:14    Titel: Antworten mit Zitat

Jup, danke.
Läuft 100%wunderbar mit "RapidQ2" als Dll.
Klasse.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 16.06.2010, 14:15    Titel: Antworten mit Zitat

Könnt ihr mal aufhören auf funkelds Mist einzugehen!?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 16.06.2010, 18:44    Titel: Antworten mit Zitat

kannst du ma aufhören dumme posts zu posten?
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 17.06.2010, 15:51    Titel: Antworten mit Zitat

Danke für deine Unterstützung MisterD.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 21.06.2010, 23:26    Titel: Antworten mit Zitat

Eben. Solang er nicht fragt wie man das Internet downloaded ist doch alles okay grinsen grinsen grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 22.06.2010, 11:30    Titel: Antworten mit Zitat

Ich glaube das hat 28398 schon einmal gemacht.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 22.06.2010, 16:42    Titel: Antworten mit Zitat

@PMedia: Dieser Klassiker kommt wirklich immer wieder gut happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz