AutoIt Compiler (Project Perseus)

  • Die Source-Pakete sind ja nun schon eine ganze Weile raus und nicht wenige haben es bereits getestet. Wäre schön, mal eine Rückmeldung zu bekommen ^^


    LASM finde ich super, genauso Perseus.
    Was mich anfangs etwas gestört hat ist, dass LASM ein Problem mit Dateien hat, die ein Leerzeichen im Namen haben.
    Es wäre außerdem cool, wenn LASM mit -h oder /? eine kleine Hilfe anzeigen würde und man mit -o nur den Bytecode erhält,
    ohne das ganze PE "Zeug" (z.B. um den Code in ein AutoIt Skript einzubinden).

  • Hi,

    Zitat

    Ich meine so triviale Sachen wie StringLen wurden doch schon 1000 mal geschrieben und veröffentlicht.

    Eine "Funktion" Stringlen (also das Zählen aller Zeichen) ist per se schon Mumpitz und nur Zeitverschwendung, da spätestens nach jeder beliebigen stringbearbeitenden Funktion doch die Länge des Strings bekannt ist!
    In einer "richtigen" Programmiersprache hat genau diese Funktion nichts weiter zu tun, als auf eine Speicherstelle zu verweisen, in der die Stringlänge gespeichert ist! Es kommt nur auf die Implementation/Definition eines "Strings" an, wieso nicht einfach das erste dword/qword des "Strings" mit der Stringlänge belegen?!
    Wieviele Vergleiche/Abfragen auf das Stringende und damit Rechenpower könnten sich einsparen lassen, solch ein Konzept einzusetzen (was es übrigens bei allen Funktionen, die ein Handle als Speicherstelle zur Beschreibung der Eigenschaften oder Funktions-Ein/Ausgabe benutzen, schon gibt ;) )

    Btw, der Link ist tot, gibt es schon Updates?

  • Andy:

    Einfaches Fallbeispiel ist die (bereits umgesetzte) Funktion ConsoleWrite. Diese nimmt einen DWORD String an - aber wozu soll man mehr Buffer im Kernel bereitstellen als nötig? Das wäre Mumpitz ^^. Deswegen muss vorher die Bytelänge bestimmt werden, denn diesen Wert erwartet auch die WinAPI ^^.

    Bei Funktionen die eine Struct benötigen, ist die Bytelänge bereits fest angegeben.

    Zitat von Andy

    Btw, der Link ist tot, gibt es schon Updates?

    Der Download funktioniert auf jeden Fall ^^. Du hast doch garnicht den Link :huh:

  • Die Methodik habe ich mir so nicht ersonnen, das war MS. Das Problem ist, das vor dem Erstellen des Buffers in der WinAPI eine Struct erstellt werden muss, die muss nunmal eine feste Länge haben - ob ich da nun eine Zahl oder diese Funktion einsetzte macht zeitlich keinen Unterschied. Oder anders gesagt: Bevor das zeitlich einen Unterschied machen würde, wärst du sowieso schon an der Call-Grenze der Console-Funktion pro Sekunde. Consolenanwendungen sind für LASM sowieso total ineffizient, da viel mehr vorbereitende Funktionen und Konstanten notwendig sind, als bei einem GUI Subsystem. ^^

    Zitat von James1337

    Es wäre außerdem cool, wenn LASM mit -h oder /? eine kleine Hilfe anzeigen würde und man mit -o nur den Bytecode erhält,

    Na wenn ein Helpfile, dann ein externes. Ich versuche mich zZ an der LASM Dll, die man dann um den Bytecode bemühen kann.

  • Ist möglich:

    Code
    inc py

    Dann könntest du ja noch folgendes in Parse_Constants_And_Vars einfügen (oder so ähnlich):

    [autoit]

    $Script = StringRegExpReplace($Script, "(\w+)\+\+", "inc $1")
    $Script = StringRegExpReplace($Script, "(\w+)--", "dec $1")

    [/autoit]
  • Kurzer Zwischenstand:

    • Variablennotation mit $ idiotensicher eingeführt (optional wie in Au3 v3.3.9.5.X2)
    • Mehrdimensionale Arrays
    • Structs (sind Objekte wie in v3.3.9.5.X2)
    • While, Do, For, If komplett vollendet
    • Verschachtelte Funktionen und mehrzeilige Argumente sowie Mehrfachanweisungen einzeilig
    • Ausführlicher Debugger mit Zeilennummer und Fehlerbeschreibung
    • Switch zwischen Consolen & GUI Anwendung nahtlos möglich
    • Direkte Rekursion ohne Limit
    • Kompression entweder per LZMA oder farbrauschs kkrunchy (Bekannt aus Demo-Projekten wie Chaos Theory oder KKrieger)


    Release nächsten Monat inkl. Hilfe etc.

  • Hört sich nett an, willst du diesen Compiler genau gleich mit dem Autoit machen? also
    das man quasi die Autoit Scripts ohne zu "Konventieren" bei deinen Compiler Compilieren kann?

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Nein. Wie oft soll ich das noch erklären :rolleyes: :D

    Perseus = Eine Programmiersprache
    AutoIt = Andere Programmiersprache

    Ich will und kann AutoIt nicht komplett nachbauen. Nur eine ähnliche Sprache ^^. Es soll ja auch möglich sein andere Sprachen nach Prs zu konvertieren außer AutoIt. Des Weiteren hat Prs keine eigenen Funktionen wie AutoIt, sondern arbeitet mit den Windows-Funktionen.

    Für diese AutoIt-spezifischen Funktionen gibt es einen Prs-Wrapper. Der Rest muss von Au3 nach Prs konvertiert werden, was kein großer Aufwand ist. ^^ <--- und darum gehts hier letztendlich.

    Also klare zwei Ziele:

    1. Eigene Hochsprache
    2. AutoIt nach 1. Konverter

  • Achso k ;D jz hab ich verstanden^^

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Ich bereite das Dev-Preview vor.

    Wer eins will -> PN

    Q: Was sollte ich nach dem Erhalt tun?
    A: Im Forum registrieren und im Thread eure Meinung / Anregung etc schreiben, so dass wir das schnell Release-fertig bekommen!


    Die Pakete gehen dann MORGEN raus!

    Einmal editiert, zuletzt von minx (27. März 2013 um 19:35)

  • Noch Unveröffentlicht^^
    Wenn du es unbedingt haben willst, schreib minx ein PN (Denke mal das würde gehen :whistling: )

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes: