PaladiumX [SkriptSprache] [Last Release: 1.0.3.0]

Anwendungen, Tools, Userlibs und anderes nützliches.
Little John

Beitrag von Little John »

cxAlex hat geschrieben:Das mit der Lizenz muss er noch mit mit Fred besprechen
Gibt es diesbezüglich etwas Neues, oder ist die Sache immer noch in der Schwebe?

Gruß, Little John
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Das is immer noch in der Schwebe.... .

Weiterentwickelt wird trozdem, bald gibts hier ne neue version.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Little John

Beitrag von Little John »

cxAlex hat geschrieben:Weiterentwickelt wird trozdem, bald gibts hier ne neue version.
Gut! :-)

Gruß, Little John
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

So, wie angekündigt eine neue Version:
Änderungen:

Allgemein:
- Diverse interne Bugfixes.
- Längere Befehlsketten/Ausdrücke/Verschachtelungen werden schneller abgearbeitet

DLL - Interpreter:
- Asyncroner Modus
- Pausieren und fortsetzen der Ausführung möglich
- Setzen und lesen von Arrays und Variablen wärend der Ausführung aus PB möglich
(Achtung! Bei Zugriffen auf Arrays/Variablen die gerade vom Script benötigt werden ohne die Ausführung zu pausieren kann es zu Abstürzen des Interpreters kommen.)

In Planung:
- Interface komplett neu programmieren -> PB kompatibel
- StrutureUnion Keyword
- Compiler-Keywords (CompilerIF,CompilerSelect...)
- EnableExplicit
- SizeOf(),OffsetOf() Funktionen

Download

Mich würde es sehr interressieren wie euch PX gefällt und was ihr euch noch dazu wünscht (auser einem besseren Editor :twisted: ), in welche Richtung die Programmierung laufen soll.

Natürlich würde ich gerne wissen ob und für was ihr PX nutzt/nutzen würdet.Über Feedback freue ich mich immer, auch konstruktive Kritik ist willkommen.

Ihr könnt auch selbst Libs dafür programmieren, den Quellcode dafür hier zur Verfügung. Währe natürlich toll wenn ihr eure Libs dann hier zur Verfügung stellt, oder mir erlaubt sie in das PX-Packet zu integrieren.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Beitrag von Josef Sniatecki »

Dein Interpreter ist echt gut (Konkurenz :mrgreen:). Ich find es toll, dass
du die Arbeit geschafft hast, einen Intepreter (fast) mit der Syntax von
PureBasic zu programmieren.

Nun stelle ich auch mal Fragen zu deinem Interpreter :D:
Welche Art von Interpreter ist das: Damit meine ich, ob du die Elemente
des Codes durch Tokens verarbeitest, oder Zeichen für Zeichen liest, oder
sogar den Code zwischenkompilierst (in eine Bytecode).

Außerdem finde ich es cool, dass du es ermöglicht hast, eine Bytecode zu
erstellen und auszuführen.
Damit würde auch meine zweite Frage kommen:
Wie ist der Bytecode etwa aufgebaut. Sind die etwa wie in ASM aufgebaut
(also Opcodes) oder stellen sie genauso wie der Original-Code eine
Struktur dar.
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Naja, Teils,Teils.

Zuerst werden alles Variablen,Array,Funktions,usw. Namen wegoptimiert und durch eindeutige Nummern ersetzt um später schnellere Zugriffe zu erreichen (außer im Debugger).:

z.B.: a+b wird zu [Var:1]+[Var:7]

Komplexe Ausdrücke werden werden soweit es geht vereinfach:

z.B.: x*(12/(4-1)) wird zu x*3 und dann wir x wegoptimiert

Verschachtelungen werden in eine Baumstrucktur umgewandelt, erhalten aber nicht wie in Java eine eine eigene Zeile sondern bleiben auf einer Zeile:

z.b: x=(a+b)/12 wir Symbolisch zu SET x DIV ADD a b 12,
in weiterer Folge [Token:Set] [Var:x] [Token:ADD] [Var:a] [Var:b] [Num:12]
Also eine Struktur, aber ohne Verschachtelungen.

Das ganze passiert On-The-Fly.
d.h. beim ersten mal arbeitet der Intepreter wirklich noch

x=(a+b)/12

ab, führ es aus, und ersetzt es dann mit der optimierten Form.
Ob es bereits optimiert ist erkennt er am ersten Byte, das kennzeichnet ob es sich schon um BCode oder normalen Code handelt. Das ganze hat den Vorteil das keine längeren Ladezeiten durch zu viel Voroptimierung entstehen, der Nachteil ist aber das der ersten Durchlauf des Befehls etwas länger dauert, da er Übersetzt und Ausgeführt werden muss, aber dafür sind alle nächsten Durchläufe (spez. in Schleifen) schneller. Das hat den Vorteil das wirklich nur das übersetzt wird was auch ausgeführt wird. Ich denke dieses Verhalten ähnelt einem JIT-Compiler, ist nur etwas primitver.

Der Bytecode ist der optimierte QuellcodeCode (da wird vorher alles in BCode übersetzt) und alle Bibliotheken zusammen in einem DBIN - Archiv verschlüsselt gespeichert.

Derzeit arbeite ich daran, Teile des Codes die nie erreicht werden (z.b. Selects/Ifs mit konstanten Werten), oder nie benötigte Variablen wegzuoptimieren, aber das ist schon etwas schwieriger, da der Programmierer ja die Variablen im Speicher ändern kann oder direkt in den Code jumpen mit GoTo (Ich glaub diese Unding der Programmierung bau ich wieder aus. :twisted: )
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Neue Version:

Neu:
- SizeOf()
- CompilerIf,CompilerSelect

Verbessert:
- Dateien sind kürzer geöffnet, weniger parallel offene Dateien
- Schnellere Voroptimierung
- Schnellerer ByteCode - Erzeugung
- Debugger zeigt Anzahl der verarbeiten Zeilen, inc. Includes
- div. Bugfixes

In Planung:
- OffsetOf() [50% fertig]
- StructureUnion [10% fertig]
- Macros [70% fertig]
- EnableExplicit [vorerst auf Eis gelegt]
- Interface neu [vorerst auf Eis gelegt]

Dowload

Mich würde wirklich sehr interresieren ob und wie ihr PX nutz, und was ihr noch eingebaut haben wollt, bzw. ändern würdet, ein bisschen Feedback/BugReports währen toll.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

cxAlex hat geschrieben:Neue Version:[...]
... habe ich grade mal ein wenig getestet. Mir ist folgendes aufgefallen:

* IDE gestartet
* SampleCode geladen (HTTP_ServerInfo.dss)
* SampleCode gestartet -> Funktioniert (Messagebox erscheint wie erwartet)
* EXE erstellt
* EXE gestartet -> Nichts passiert (Keine Fehlermeldung, kein Garnix)

Habe ich da was übersehen?

Grüße ... Kiffi

P.S.: Sehr interessantes Projekt. :allright:
Leider habe ich nicht die Zeit, mich eingehend damit zu beschäftigen :(
a²+b²=mc²
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Bei mir funktioniert die Exe. Passiert das auch bei anderen Scripts?
Schick mir die Exe mal,ich seh mir das an.

// Edit: hast du ein Ico verwendet? Das funktioniert nämlich manchmal nicht ganz und die Exe wird unbrauchbar.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

cxAlex hat geschrieben:Passiert das auch bei anderen Scripts?
ich habe jetzt mal Window.dss kompiliert und gestartet (im Interpreter
funktionierte der Code):

* Das Programmfenster erscheint nicht
* Im Taskmanager ist die Exe zu sehen
* Die Exe saugt sich über mehrere Sekunden 300 MB Speicher
* Fehlermeldung: Exe hat ein Problem festgestellt und muss beendet werden.
cxAlex hat geschrieben:Schick mir die Exe mal,ich seh mir das an.
123.exe (HTTP_ServerInfo.dss)
456.exe (Window.dss)
cxAlex hat geschrieben:// Edit: hast du ein Ico verwendet?
nein, kein Ico.

Grüße ... Kiffi
a²+b²=mc²
Antworten