• Desweiteren würde ein ObjT2Assembler Interpreter nur auf einem emulierten Mikroprozessor in Windows funktionieren ansonsten muss man das auf einer Diskette haben und die booten.


    Ähh, nein. C++ wird doch auch zu Assembler und dann zu Maschinencode kompiliert und geht dann unter Windows.

    Soweit ich weiß ist doch Assembler prozesserabhängig und ist auf jeder CPU verschieden?


    Dann nimmt man halt LLVM. Das ist assemblerähnlich und wird in einem letzten Schritt in richtigen Assembler bzw. Maschinencode umgewandelt.

  • Na das sieht doch schon ganz gut aus. Ich bin gespannt, wie sich das entwickelt.

    Was passiert denn beim Kompilieren (-> Übersetzen) eines C-Source-Files? Richtig, er wird in Assembler übersetzt und dann wird dieser ASM-Code in Maschinencode übersetzt. C wird zu ASM konvertiert, ASM wird zu Maschinencode konvertiert. :P

    Mit dem Unterschied, dass dies nicht durch einfaches Ersetzen funktioniert, da die Syntaxen von ASM und C komplett unterschiedlich sind. Der Code muss also trotzdem zuerst analysiert werden, auch, um ihn vor dem Kompilieren optimieren zu können (und so weiter). Das hat also nichts mit dem StringReplace aus der ersten Version von ObjT zu tun.

  • Das ist schon ein guter Anfang! :)
    Ich würde dir empfehlen einzelne Funktionen die du in deine eigene Sprache integrieren willst, jeweils in eine eigene Funktion zu packen um die Übersicht zu behalten. Das kann bei einer wirklich ausgearbeiteten Programmiersprache dann tatsächlich im Code des Interpreters sehr unübersichtlich werden. Am besten überlegst du dir, wie du das Ganze direkt schon ordentlich schreibst, sodass du später keine Probleme bekommen wirst.

    LG. Make :)

  • Danke an alle die mir geholfen haben,

    Und das mit den Funktionen werde ich auch umsetzen, allerdings hänge ich jetzt gerade
    an der variabelen dekleration :rofl: .
    Aber das bekomme ich schon irgendwie hin :thumbup:

    Gruss Robin98

  • Okay, da du ja einen Interpreter schreibst, musst du auch die Variablen interpretieren. Das bedeutet, dass du ein Array benötigst wo du einmal den Bezeichner und einmal den Wert abspeicherst. Beispielsweise ist das Schlüsselwort "var" für eine Variablendeklartion.

    var Bezeichner = 5 // Variable Bezeichner wird deklariert mit dem Wert 5

    Dein Interpreter müsste nun folgendes machen:
    - Schlüsselwort var gefunden, einmal das vorgesehene Array ($avVariablen) im Speicherplatz um 1 erhöhen: ReDim $avVariablen[UBound(Variablen) +1][2]
    - Bezeichner auslesen und in Array speichern: $avVariablen[UBound...][0] = "Bezeichner"
    - Wert auslesen und in Array speichern: $avVariablen[UBound...][1] = 5

    Findest du nun irgendwo im Code eine Zeichenfolge welches kein Schlüsselwort ist, dann durchläufst du $avVariablen und kannst somit überprüfen ob dies eine Variable ist und welchen Wert sie enthält.

    Ich hoffe ich konnte dir bei deinen kleinen Hänger helfen!

    LG. Make :)

  • Wie gesagt, wenn du eine Zeichenkette im Code findest die du nicht als Schlüsselwort, Funktion, String usw... Zuordnen kannst, musst du einfach dein Variablen Array durchlaufen und dann nachschauen ob dies evtl. eine Variable ist. Wenn ja, dann kannst du einfach den Wert der Variable (welche im Array gespeichert ist) auslesen.

    Du speicherst ja die Parameter für die Message Box jeweils in einzelne Variablen. So ist es doch nicht mehr schwierig, den Wert im Array stattdessen zu verwenden.

    LG. Make :)

  • Ich würde mich an deiner Stelle nicht auf LLVM konzentrieren. Übersetz die Sprache lieber in C++, damit kommst du zum Ziel. Wenn du das in LLVM übersetzen willst (und die Sprache etwas können soll), bist du in einem Jahr noch nicht fertig.
    Eine interessante Alternative könnte eine Übersetzung in Java sein (nur so als Idee). Java ist vielleicht nicht so schnell wie die C-Derivate, aber hat den großen Vorteil der Plattformunabhängigkeit. Eine Sprache die AutoIt ähnlich ist (soll heißen: relativ simpel etc. pp.) und plattformunabhängig ist, ist mit Sicherheit nicht trivial zu programmieren. Aber das wäre dann definitiv nichts "sinnloses". Obwohl ICH dein Projekt überhaupt nicht sinnlos finde; gerade als ich angefangen hab, Programmieren zu lernen (ich denke doch, dass du noch Anfänger bist; korrigier mich bitte, wenn ich mich irre), habe ich bereits existierende Sachen immer wieder Programmiert und noch mal geringfügig optimiert...

    Widerstand ist Zwecklos!

    Meine Projekte: Kizzys Controller, 2nd Desktop und Versteckte Dateien Assistent
    Meine Downloadwebsite .

  • Hallo COM,

    Ich habe jetzt gerade eben die neuste Version fertig gestellt

    und oben im ersten Post angehängt, schreibt mir eure

    Meinungen ich freu mich über jedes lob und über jede Kritik :D

    Gruss Robin98

  • Hallo Com,
    Ich habe gerade die letzten fehler behoben der Version 1.4.4 X2 und jetzt sind
    sie da die neuen Versionen!
    Informationen:
    1.4 Stabel
    1.4.4 X1 Beta-getestet
    1.4.4 X2 Beta ungetestet

    Gruss Robin98