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. :allright:

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 :allright: , aber im Grunde nicht für viel Nützlich :mrgreen:
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.