Seite 1 von 1
[TUTORIAL] ObjektCode in FASM für PureBasic erstellen!
Verfasst: 11.08.2017 15:57
von Mijikai
Was ist ObjektCode?
ObjektCode (.OBJ) ist vorcompilierter Code der immer wieder verwendet werden kann.
Im Prinzip kann man sich das Ganze wie eine statische Library vorstellen.
(Eine statische Library (.LIB) vereint nur mehreren ObjektCodes.)
ObjektCode Wikipedia:
https://de.wikipedia.org/wiki/Objektcode
Statische Libraries:
https://de.wikipedia.org/wiki/Programmb ... bliotheken
Benötigt:
- FASM
https://flatassembler.net/
- Assembly Grundkenntnisse
Wie kann ich ObjektCode mit FASM erstellen?
Beispiel FASM x64:
Code: Alles auswählen
format MS64 COFF
include 'win64a.inc'
public MyMessage
extrn MessageBoxW
proc MyMessage
sub rsp,40h
mov r8,rcx
xor r9,r9
xor rcx,rcx
call MessageBoxW
add rsp,40h
ret
endp
PureBasic v.5.60 x64:
Code: Alles auswählen
Import "MyPureBasicOBJ.OBJ"
MyMessage(Title.s,Text.s)
EndImport
MyMessage("Hallo","Test")
Viel Spass
Re: [TUTORIAL] ObjektCode in FASM für PureBasic erstellen!
Verfasst: 11.08.2017 17:15
von bobobo
hmm
und wenn man OBJtze mit Purebasic direkt bauen könnte?
Z.B. Compilierst Du auf der Commandline mit dem Parameter /COMMENTED
danach die so erzeugte asm mit FASM zum OBJ
Hab aber keine Ahnung ob das taugt...
Re: [TUTORIAL] ObjektCode in FASM für PureBasic erstellen!
Verfasst: 11.08.2017 18:06
von RSBasic
Hallo Mijikai,
danke für deine Anleitung.
1. Ist die ausgegebene Obj-/Lib-Datei vergleichbar mit Userlibrary?
2. Kann die ausgegebene Obj-/Lib-Datei, die mit einer älteren PB-Version erstellt wurde, auch mit neueren veränderten PB-Version verwendet werden oder hat man wie bei Userlibs das Kompatibilitätsproblem?
3. Falls es nicht mit Userlibrary vergleichbar ist, wofür braucht man das?
Re: [TUTORIAL] ObjektCode in FASM für PureBasic erstellen!
Verfasst: 11.08.2017 18:26
von Mijikai
Ich glaube nicht, dass man den von PureBasic generierten FASM Code
einfach in ein (brauchbares) .OBJ umwandeln kann.
Aber das ist nur eine Vermutung ich lasse mich gerne eines besseren belehren.
Leider bin ich kein Experte auf dem Gebiet
RSBasic hat geschrieben:...
1. Ist die ausgegebene Obj-/Lib-Datei vergleichbar mit Userlibrary?
2. Kann die ausgegebene Obj-/Lib-Datei, die mit einer älteren PB-Version erstellt wurde, auch mit neueren veränderten PB-Version verwendet werden oder hat man wie bei Userlibs das Kompatibilitätsproblem?
...
Wenn der ObjektCode (rein) mit FASM (wie im Bsp.) erstellt wurde sollte es keine Kompatibilitätsproblem geben.
Re: [TUTORIAL] ObjektCode in FASM für PureBasic erstellen!
Verfasst: 11.08.2017 18:29
von RSBasic
Hallo Mijikai,
danke für deine Antwort.
Mijikai hat geschrieben:RSBasic hat geschrieben:2. Kann die ausgegebene Obj-/Lib-Datei, die mit einer älteren PB-Version erstellt wurde, auch mit neueren veränderten PB-Version verwendet werden oder hat man wie bei Userlibs das Kompatibilitätsproblem?
2. Ja
Da meine zweite Frage eine Oder-Frage war, bezieht sich dein Ja auf die erste oder zweite Teilfrage?
Re: [TUTORIAL] ObjektCode in FASM für PureBasic erstellen!
Verfasst: 11.08.2017 18:34
von Mijikai
Sorry war noch am Bearbeiten von meinem Post.
Meine Antwort sollte nun vollständig sein.
Re: [TUTORIAL] ObjektCode in FASM für PureBasic erstellen!
Verfasst: 11.08.2017 19:39
von ts-soft
Mijikai hat geschrieben:ObjektCode (.OBJ) ist vorcompilierter Code der immer wieder verwendet werden kann.
Genauso wie er bereits in den vielen Libraries von PB enthalten ist, mit denselben Abhängikeiten wie sie auch für andere
Libs gelten (z.B. Tailbite-Generierte).
Recht anschaulich
, aber im Grunde nicht für viel Nützlich
Srod, engl. Forum hat mal entsprechendes Tool zum generieren von statischen Libs erstellt, hat sich aber mehr als Spielerei
herausgestellt und deshalb nicht weiterentwickelt.
Gruß
Thomas
Re: [TUTORIAL] ObjektCode in FASM für PureBasic erstellen!
Verfasst: 11.08.2017 19:42
von RSBasic
ts-soft hat geschrieben:Mijikai hat geschrieben:ObjektCode (.OBJ) ist vorcompilierter Code der immer wieder verwendet werden kann.
Genauso wie er bereits in den vielen Libraries von PB enthalten ist, mit denselben Abhängikeiten wie sie auch für andere
Libs gelten (z.B. Tailbite-Generierte).
Das beantwortet meine Frage, danke.