Hallo. guten Tag.
ich hab hier 2 Procedure die funktionieren als DLL.
Nun möchte ich den Inhalt in der Procedure mit ASM lösen , Mult und Div , übergeben werden 2 Werte und die Ausgabe ist dann die Lösung von der ASM-Routine.
Wie geht das bitte.
------------------------------------
ProcedureCDLL.l mult(a.l,b.l)
wertl.l = a*b
ProcedureReturn wertl.l
EndProcedure
ProcedureCDLL.l div(a.l,b.l)
wertl.l = a/b
ProcedureReturn wertl.l
EndProcedure
---------------------------------
danke
ASM in Purebasic dll reinbringen mit Ausgabe.
Re: ASM in Purebasic dll reinbringen mit Ausgabe.
Warum ?
Schau dir die ASM Ausgabe von Compiler an. Siehe Hilfe Command Line Compiler und Option '--commented'
Schau dir die ASM Ausgabe von Compiler an. Siehe Hilfe Command Line Compiler und Option '--commented'
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: ASM in Purebasic dll reinbringen mit Ausgabe.
Das interessiert mich einmal mit 74 Jahren.
Wie man das in einer Dll erstellt meine beiden Beispiele mit Ausgabe.
Habe mich wohl falsch ausgedückt, in der Procedure soll der ASM-Code für Mult und Div stehen.
Danke.
Wie man das in einer Dll erstellt meine beiden Beispiele mit Ausgabe.
Habe mich wohl falsch ausgedückt, in der Procedure soll der ASM-Code für Mult und Div stehen.
Danke.
Re: ASM in Purebasic dll reinbringen mit Ausgabe.
Es dürfen nicht alle register verwendet werden. Siehe PB Hilfe Inline Assembler.
Mit ProcedureReturn ohne Angabe wird das RAX register zurückgegeben.
Code: Alles auswählen
ProcedureCDLL.l add(a.l, b.l)
!mov eax, dword[p.v_a]
!add eax, dword[p.v_b]
ProcedureReturn
EndProcedure
ProcedureCDLL.l mul(a.l, b.l)
!mov eax, dword[p.v_a]
!mov ecx, dword[p.v_b]
!imul eax, ecx
ProcedureReturn
EndProcedure
ProcedureCDLL.i div(a.i, b.i)
!mov rax, qword[p.v_a]
!mov rcx, qword[p.v_b]
!cqo
!idiv rcx
ProcedureReturn
EndProcedure
r1 = add(1,1)
Debug r1
r1 = mul(2,2)
Debug r1
r1 = div(16,2)
Debug r1
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: ASM in Purebasic dll reinbringen mit Ausgabe.
Danke , mit diesen kleinen Sachen hast du mir schon viel geholfen.