Eigene Programmiersprache

Moin,

Ich würde mir eine Session über wie man seine eigene Programmiersprache erstellt und dann auch damit arbeiten kann wünschen.

LG,
Lukas

1 „Gefällt mir“

Ich würde diese Session vorbereiten und anbieten, wenn sich nicht jemand besseres findet.

1 „Gefällt mir“

Ich würde gerne an der Session teilnehmen, falls sie stattfinden sollte

Mich würde auch dafür interessieren

Ich habe Interesse.

Ich habe gestern zum ersten Mal erfolgreich einen lexerbasierten Parser geschrieben und nun auch eine ungefähre Vorstellung, wie man die Session(s) aufbauen würde.

Besteht hier noch Interesse von @lukasw oder vielleicht auch @nik, der da schon Ideen hatte zur Gestaltung einer solchen Session?

Ich hätte Interesse an dem Thema, auch im Bezug auf einen eigenen funktionierenden Prozessor und wie ein Computer im allgemeinen funktioniert

Was ist hier schon vorbereitet? Was müssen wir noch machen?

@nik: Du hast geschrieben, dass du schon eine ungefähre Vorstellung hast. Wann hättest du die Möglichkeit mal darüber zu sprechen?

Computer mit Logisim bauen und simulieren

Die Idee war, einen Computer mit Logisim zu simulieren. In Logisim kann man einelne Logikgatter, wie zum Beispiel das AND-Logikgatter, platzieren und mit einem anderen verbinden. Das Programm weist auf Kurzschlüsse und nicht verbundene Kabel hin.

Teilnehmende

Logisim

Nur eine kurze Legende, um die Grafiken zu erklären: hellgrünes Kabel bedeutet, dass es an ist, dunkelgrün bedeutet, dass es aus ist. Rot würde bedeuten, das dort ein Fehler ist, wie zum Beispiel ein Kurzschluss. Blau zeigt einen nicht definierten Zustand an und grau symbolisiert, dass das Kabel nicht angeschlossen ist.

grafik

Logic Gates

Wir haben zuerst besprochen, was die wichtigsten Logic-Gates machen. Im Allgemeinen nimmt ein Logikgatter zwei Inputs und gibt daraus einen Output. Die wichtigsten Gatter sind meiner Meinung nach das AND-Gatter (oben), das OR-Gatter (mittig) und das XOR-Gatter (unten), da sie am häufigsten gebraucht werden.

grafik

Diese Tabellen zeigen, bei welchen Eingängen ein Gatter welchen Output gibt.

AND-Gatter

A B Output
0 0 0
1 0 0
0 1 0
1 1 1

OR-Gatter

A B Output
0 0 0
1 0 1
0 1 1
1 1 1

XOR-Gatter (Exclusive Or)

A B Output
0 0 0
1 0 1
0 1 1
1 1 0

Speicher

Damit ein Computer funktioniert, muss er nicht nur verarbeiten, sondern auch speichern können. Ich beziehe mich an dieser Stelle nur auf den Arbeitsspeicher (RAM). Eine Speicherzelle kann immer nur ein Bit speichern. Speicherzellen bestehen ebenfalls aus Logic-Gates.

SR-Flipflop

Der am häufigsten verwendete Speicher ist vermutlich das SR-Flipflop. Das S steht für Set, das R für Reset. Die Kreise an den Enden der Gates zeigen, dass die Gates invertiert sind.

grafik

D-Flipflop

Das D-Flipflop basiert auf dem SR-Flipflop. Es hat ebenfalls zwei Eingänge, D für Data und C, oder Clk, für Clock. Das D-Flipflop hat die Besonderheit, das es immer dann, wenn der Clk-Input ausgeht, den Zustand des Data-Inout übernimmt, egal ob 1 oder 0. Der Ausgang wir dabei überschrieben. Das D-Flipflop ist essenziell für das verzögern von Prozessen, da man nur so eine Reihenfolge festlegen kann.

grafik

Das Flipflop verzögert den Input, in dem es das Bit durch zwei SR-Flipflops schickt. Genau in dem Moment, in dem das eine Flipflop den Input verweigert, Übernimmt das andere ihn. Durch das aneinanderreihen mehrerer D-Flipflops kann man ein Signal um mehrere Takte verzögern.

JK-Flipflop

Das JK-Flipflop ist in seiner Funktionsweise sehr ähnlich aufgebaut, wie das D-Flipflop. Der einzige Unterschied ist, dass es drei Eingänge hat, J für Jump, K für Kill und C für Clock. Das JK-Flipflop hat ebenfalls eine Verzögerung durch den Takt.

Addition

Was das Rechnen in Binär sehr speziell macht, ist die Tatsache, dass ein Übertrag bereits bei 1 + 1 = 10 erfolgt. So kann man mit einem AND-Gate detektieren, ob ein Übertrag von Nöten ist. Ein XOR-Gate berechnet die eigentliche Stelle. Jede Recheneinheit besitzt drei Eingänge: A, B und C. C steht für Carry, auf Deutsch tragen, bzw. Übertrag. Jede Einheit hat zudem zwei Ausgänge, S für Som, der eigentliche Ausgang und C für Carry. Der Carry-Bit Ausgang wir mit dem Carry-Eingang der nächsten Einheit verbunden.

Die Null am Carry-Input der obersten Einheit zeigt dem Programm nur, dass das Kabel richtigerweise nicht angeschlossen ist, um zu verhindern, dass das Programm einen Fehler wirft.

Subtraktion

Subtraktion unterscheidet sich nicht wesentlich von der Addition. Ein Übertrag erfolgt genau dann wenn 0 - 1. Dazu muss nur der obere Eingang der AND-Gates invertiert werden.

Weitere Rechnugen

Da Multiplikation, Division, Wurzeln, Logeritmen und Ähnliches wesentlich komplizierter sind, sind wir innerhalb der gegebenen 75 Minuten nicht mehr dazu gekommen.

1 „Gefällt mir“