Seite 1 von 5

Native PureBasic-Funktionen

Verfasst: 10.10.2009 17:57
von Marvin
Hallo,

Gibt es irgendwo eine Dokumentation zu den Standard-PureBasic-Funktionen wie PrintN oder so? Damit meine ich nicht einfach
Die PB-Hilfe hat geschrieben:Zeigt den angegebenen 'Text$' in der Konsole an und fügt einen Zeilenumbruch hinzu.
Sondern die genaue Dokumentation für PB_PrintN. Das wäre in diesem Fall laut meinen bisherigen Erkenntnissen:
  • · Ein Parameter auf dem Stack: Pointer auf auszugebenden String
    · Parameter werden erst nach dem Return vom Stack entfernt (also nicht "ret 4" sondern "ret" und im Code dann "add esp,4")
Oder für PokeB:
  • · Ein Parameter auf dem Stack: Zu setzender Wert
    · Ein Parameter in eax: Adresse
    · Parameter werden mit dem Return vom Stack entfernt ("ret 4")
Sowas meine ich. Insbesondere würde mich derzeit SYS_CopyString interessieren, weil ich überhaupt nicht verstehe, was für ein Wert als Quellstring (also der Wert in edx) angegeben wird (offenbar eine Art Offset von PB_StringBase)... :?

Re: Native PureBasic-Funktionen

Verfasst: 10.10.2009 19:00
von Kaeru Gaman
das ist keine dokumentation, sondern eine dekompilierung.

schreib dir doch nen kleinen code mit den befehlen die dich interessieren, und compiliere mit dem flag /commended

Re: Native PureBasic-Funktionen

Verfasst: 10.10.2009 19:10
von Marvin
Zur Ausgangslage: Ich möchte mir eine Bibliothek in C basteln, in der diese PureBasic-Funktionen sind. Dazu kompiliere ich den PB-Source sowieso mit /commented (bzw. -c unter Linux) und benutze die Executable gar nicht. Die purebasic.asm kompiliere ich dann selbst zu einer Objektdatei und linke die gegen die C-Bibliothek.
Um diese Bibliothek bauen zu könne, muss ich wissen, wie das Interface dieser Funktionen ist. Weil ich mir den Assemblercode bereits angesehen habe, weiß ich, wie PokeB und PrintN (und einige weitere) funktionieren, aber bei SYS_CopyString sehe ich überhaupt nicht durch.

Re: Native PureBasic-Funktionen

Verfasst: 10.10.2009 19:27
von DarkDragon
Marvin hat geschrieben:Zur Ausgangslage: Ich möchte mir eine Bibliothek in C basteln, in der diese PureBasic-Funktionen sind. Dazu kompiliere ich den PB-Source sowieso mit /commented (bzw. -c unter Linux) und benutze die Executable gar nicht. Die purebasic.asm kompiliere ich dann selbst zu einer Objektdatei und linke die gegen die C-Bibliothek.
Um diese Bibliothek bauen zu könne, muss ich wissen, wie das Interface dieser Funktionen ist. Weil ich mir den Assemblercode bereits angesehen habe, weiß ich, wie PokeB und PrintN (und einige weitere) funktionieren, aber bei SYS_CopyString sehe ich überhaupt nicht durch.
Ja da gab es eine Dokumentation, die wird aber nichtmehr auf dem laufenden gehalten, weil eben das rumgespiele mit den PureBasic internals nichtmehr erwünscht ist (Führt nur unnötig zu Unkompatibilitäten bei Updates).

Re: Native PureBasic-Funktionen

Verfasst: 10.10.2009 19:45
von ts-soft
SYS_CopyString gehört zum Stringmanager (Stringmanager.lib) und hat keinerlei Parameter.
So ganz verstehe ich nicht, was Du möchtest. Die PB Funktionen liegen doch schon als
statische C-Lib vor, teilweise gepackt (ohne ext.) und teilweise entpackt (stringmanager).
Die Libs kann man theoretisch auch in anderen Sprachen verwenden, was aber wiederum
nicht erlaubt ist.

Oder willste den kompletten Stringmanager nachprogrammieren? Na dann viel Spaß :mrgreen:

Ausserdem mußte ja noch sämtliche Abhängigkeiten auflösen, das wird wohl nichts werden,
es sei denn man verwendet die Orginal mit PB gelieferten Libs, was wiederum nicht erlaubt ist.

Re: Native PureBasic-Funktionen

Verfasst: 10.10.2009 19:48
von Marvin
ts-soft hat geschrieben:Oder willste den kompletten Stringmanager nachprogrammieren?
Genau das. :wink:

Ich möchte mich doch mal daran setzen, ein OS in PureBasic zu schreiben. Dazu bräuchte ich diese Funktionen natürlich nicht unbedingt (ich könnte ja auch mit der rohen Syntax und ohne eingebaute Funktionen arbeiten), aber schön wäre es schon.

Dass es keine Parameter hat, würde die Sache ja nochmal in ein ganz anderes Licht rücken...

Re: Native PureBasic-Funktionen

Verfasst: 10.10.2009 19:56
von ts-soft
Marvin hat geschrieben:Dass es keine Parameter hat, würde die Sache ja nochmal in ein ganz anderes Licht rücken...
Guck doch einfach mal in die Stringmanager.lib. Tools dafür gibts doch genüge.

Code: Alles auswählen

_SYS_CopyString@0
sollte dort stehen

Re: Native PureBasic-Funktionen

Verfasst: 10.10.2009 19:59
von Marvin
Mindestens einen Parameter hat die Funktion aber. Der wird in edx übergeben und ist ein Pointer zum Quellstring. Den kann so ein Tool natürlich nicht erkennen, da es nur die Stackparameter als Parameter erkennen dürfte.

Wobei ich jetzt aus der Assemblerdatei geschlossen hatte, dass noch ein Parameter auf dem Stack übergeben wird und das Ziel angibt. Scheint aber so zu sein, dass das Ziel immer PB_StringBase + PB_StringBasePosition ist. Danke :allright:

Re: Native PureBasic-Funktionen

Verfasst: 11.10.2009 14:37
von Fluid Byte
marvin hat geschrieben:Ich möchte mich doch mal daran setzen, ein OS in PureBasic zu schreiben
Bild

Re: Native PureBasic-Funktionen

Verfasst: 11.10.2009 14:51
von Marvin
Hm, also Interrupts, ProtectedMode und Paging stehen schon mal so weit. Derzeit befinde ich mich am Tastaturtreiber.
Ich könnte natürlich auch einfach weiter Betriebssysteme in C schreiben, aber warum nicht mal mit der Sprache, mit der ich programmieren gelernt habe. <)

Außerdem glaube ich, dass drei Jahre Erfahrung im Bereich Betriebssystementwicklung ausreichend sind, um zu wissen, wie "esoterisch" ein solches Projekt ist. :wink: