Autor Thema: Programmiersprache/Compiler  (Gelesen 40916 mal)

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« am: 21. May 2004, 19:54 »
Also ich habe gestern angefangen meine eigene Programmiersprache zubasteln, mit Compiler selbst verständlich. Der wandelt den Quellcode in nasm verträglichen Assemblercode um.
Bin schon recht weit gekommen:
-über 1000 Zeilen C-Code für den Compiler
-Datentypen Char Int Long
-Variablen von 128 Zeichen Länge
-Rechenopeationen Addieren, Subtrahieren, Multi, Divi und Potenzieren (keine Vorrangautomatik bisher)
-If Konstrukte
-While Konstrukte
-Gleichheits und Ungleichheitsoperatoren dafür
-Funktionsaufrufe und Rücksprünge

So ich baue dann grade an Pointern und an der Funkionsparameterübergabe. Falls ihr Lust habt mich ein bisschen dabei zu unterstützten, könnt ihr ja mal sagen, was ihr so für Funktionen euch bei einer Programmiersprache wünschen würdet. Soll irgendwann dann auch so verwendbar sein dass man nasm nur noch zum direkten Assembliern brauch, also fürs OS-Progging nutzbar ist. Sobald eine brauchbare Version davon existiert, stelle ich sie selbstverständlich hier her. Wie gesagt ist der 2te Tag heut;)

Thx im Vorraus
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #1 am: 21. May 2004, 21:12 »
Also was mir ganz wichtig erscheint:
-dynamische Datentypen
-I/O- Funktionen, für Tastatur/Bildschirm, aber auch Dateien
-Rekursionen (kann auch automatisch vorhanden sein)
-relativ freie Sysntax (je freier-je schwieriger!)
-Freiheit mit Variabeln, wie in C/C++ (long int = char = bool sind legale Ausdrücke)
...

Was auch noch ganz schön wäre:
-Klassen
-vorgefertigte Stringoperationen
...

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #2 am: 21. May 2004, 21:24 »
was sind bei dir dynamische datentypen?
dateifunktionen gehn schlecht weil die vom dateisystem usw abhängig sind
bildschirm is von der OS grundlage abhängig
was hies rekursion noch gleich?
freiheit mit variablen kommt noch, bisher müssen im selben ausdruck immer die selben typen verwendet sein
beispielsweise sieht eine Zeile zum addieren von Variablen so aus:
mAdd Var1=Var2+Var3;
mAdd zeigt an das nur Addition verwendet wird (beschleunigt nur das compilieren) die variablen müssen vorher definiert werden z.B dInt Var1=7;
Danke für die Anregungen
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #3 am: 21. May 2004, 21:29 »
Hab mich schon gewundert, wie du schon soviel mit 1000 Zeilen implementiert hast, aber so: "Befehl operator....."
Anregung: versuche doch mal sowas wie C. mit Funktionen mit Klammern usw. und einfach a = b * c ohnen vorherigen Befehl.
Sowas wie dateien und Bildschirm kanst du ja in OS-abhängige dateien Asulagern (Header, Libraries...).
Dynamische Datentypen: Alle Dateien, die man zur laufzeit erstellt und wo man nur vorher den Pointer Deklariert. Und noch besser: C-Verktoren
Rekursionen: Selbstaufrufe

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #4 am: 21. May 2004, 21:34 »
Das mit dem Befehl vorher ist Absichtlich so. Das dient dazu das der Compiler schneller arbeiten kann. Ausserdem, ich will kein 2tes C machen!
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #5 am: 21. May 2004, 21:56 »
@Roshl
Hört sich gut an stellst du das ganze auch zum testen zur Verfügung wenns soweit ist
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #6 am: 21. May 2004, 21:56 »
Ja sagte ich doch bereits*g*
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #7 am: 21. May 2004, 23:08 »
@Roshl

Sorry wieder ma zu schnell gelesen
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #8 am: 22. May 2004, 10:17 »
Dateioperationen, bei denen man z.B. FAT angiebt und die Datei usw. und dann ließt das System das direkt, also ohne umweg über die Betriebssystemprogramme... So wie mit Ints, denn dann könnte man auch ein System darin schreiben, ohne, dass man solche Funktionen neu schreiben muss...
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

kleiner

  • Beiträge: 131
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 22. May 2004, 10:28 »
Ich fände noch explizite Typenumwandlung sehr wichtig, ob das jetzt nach C-Syntax (int) oder wie auch immer gemacht wird. Vielleicht würde ich auch Inline-ASM reinbringen.
Wie wärs denn mit Templatefunktionen?
Und ganz besonders wichtig: Zeiger!

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #10 am: 22. May 2004, 11:31 »
Also Dateioperationen usw haben in einer Programmiersprache nix verloren!

Das ist Sache der jeweiligen API eines Betriebssystems.
----------------------
Redakteur bei LowLevel

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 22. May 2004, 13:11 »
Also ich wäre für OOP auch wenn das sicherlich sehr schwer zu machen ist. Des weiteren könntest du ja Dateinoperationen und so in eine art Libary (die sollte man auch machen!) reinpacken dann ist es immer noch sache des users ob er die verwendet oder nicht. Was ich bei C sehr gut finde ist das jeder ausdruck einen wert hat. Das würde ich auch machen das man also
if(Var) schreiben kann anstatt if(Var > 0).

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #12 am: 22. May 2004, 13:53 »
Dateioperationen ham wie TJ ganz richtig sagt absolut nichts in der Sprache selbst verlorn. Zeiger sind so gut wie fertig, im moment mache ich Funktionsparameter.
Bei C hat eigentlich nich jeder Ausdruck einen Wert. Wenn du if(var) schreibstkommt in assembler in etwa sowas raus:

mov eax,[var]
test var,0
je istnull:
...          ;passiert wenn var irgendwas andres als null ist
istnull:

so ähnlich, das mit tpenumwandlung ist sone sache, im Programm wird schliesslich eine feste speichermenge für jede variable festgelegt, und das zu ändern würde entweder jedesmal das programm neu strukturiern, oder eine malloc funktion brauchen die wieder OS beding ist
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #13 am: 22. May 2004, 16:51 »
aber dann muss man die sprache auf jedes eigene system portieren und das verhindert die ausbreitung auf systeme wie MenuetOS oder BeOS... (oder unsere) außerdem muss dann jeder die gleiche API an der gleichen Stelle im SPeicher haben, um mit der Sprache ein OS zu schreiben...

auf jeden fall einen Inline-ASM und vielleicht so eine Art Header in dem man einstellen kann, ob PM oder RM oder V86 und für Dateioperationen ob FAT oder Ext/2...
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 22. May 2004, 17:30 »
Hm? Das mit der ausbreitung auf MenuetOS und BeOS verstehe ich nicht ganz. Warum kann mans nicht auch dorthin portieren?

Und ich denke mir, solange die portierungsarbeit nur aus so dingen wie malloc, I/O,...besteht ist es kein wirkliches Problem.

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #15 am: 22. May 2004, 17:40 »
Es geht hier nur um die Programmiersprache selbst und den Compiler!

Für alles andere wäre eine API zuständig die dann für diese Sprache EXTRA geschrieben wird.
----------------------
Redakteur bei LowLevel

kleiner

  • Beiträge: 131
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 22. May 2004, 18:57 »
Gut wäre auch ne Aufteilung der Dateien. Also in Header und Quellcodedateien. Was ich nicht machen würde, wäre direktes Einkompilieren der Resourcen, wie es unter Windows gemacht wird.

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #17 am: 22. May 2004, 19:26 »
Leute informiert euch mal was ne Programmiersprache eigentlich ist! Die hat nix mit dateien headern usw zutun
Man muss jede sprache erst "portieren" in c kannst du auch nichts gross anstellen wenn du keine funktionen dir schreibst, nichtmal ne simple potenz geht zu berechnen indem man a=b^c; schreibt(hab ich:P)
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 22. May 2004, 20:49 »
Ich dachte es gehe hier auch um die Standard-Libary

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #19 am: 22. May 2004, 20:55 »
Nein, nur um die Sprache selbst, das ist schon kompliziert genug!
Hab jetzt übrigens das man auf die Register eax... wie"normale" Variablen verwenden kann. eax=7; also;)wird dann zu mov eax,7 wollt ich malnebenbei erwähnen
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

 

Einloggen