Autor Beitrag
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Do 25.03.04 23:32 
@ Jack Falworth
Zitat:
Würde das Prog gerne mal anschauen, da ich gerade selbst an einer Turing Maschine schreibe

Na, hast du dir (oder sonst wer) schon einen Eindruck verschaffen können ?

Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Jack Falworth
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222

Win XP Pro, Slackware 10.0
D5 Enterprise, C++, ABAP
BeitragVerfasst: Fr 26.03.04 16:43 
War gerade 3 Tage aufm Jufo Wettbewerb und hatte kein INet zu Hause. Deshalb schreibe ich erst jetzt.

Hab nur kurz drübergeschaut. Das Programm erinnert mich irgendwie an das Programm, das glaub ich Popov mal vorgestellt hat. Hab nicht so viel Ahnung über Assembler, daher kann ich dazu nichts sagen. Nur soweit. Das ganze ist weder ne Turing Maschine noch kann ich da irgendwo nen Compiler erkennen. Die Befehle sind ja schon vorgegeben und man muss sie ja nur noch über Listboxen auswählen.

Allgemein wäre es vielleicht nicht schlecht, wenn es ne kleine anleitung gäbe wie man das programm benutzt, ich blick da auf die schnelle irgendwie nicht so richtig durch.

MfG

Jack Falworth

_________________
Andere zu kritisieren ist mitunter eine Möglichkeit, sich selbst ins bessere Licht zu setzen.
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Fr 26.03.04 18:25 
Hi,

Das das Programm dem von Popov nicht unähnlich ist hab ich ja in meinem ersten Posting schon erwähnt...

Zitat:
Maschine noch kann ich da irgendwo nen Compiler erkennen. Die Befehle sind ja schon vorgegeben und man muss sie ja nur noch über Listboxen auswählen.

Häh?... Bei nem IBM Rechner sind die Befehle doch auch schon vorgegeben.. ein PUSH/POP heissen eben PUSH un POP und nich PISH und SEX ;-)
Der "Compiler" ist in der nächsten Version dabei.....
Das einzige was der "Compiler" in der aktuell upgeloadedten Version macht ist das Aufösen der Labels in feste Sprungadressen...
Ich bin gerade dabei eine art "BAsic" zu schreiben, wo die Befehle dann eben in diesen hausgemachten Assembler compiliert werden.
Dabei fin ich mit der lexikalischen Analyse fast durch un hab schon einen primitiven Automaten für die Syntaxprüfung......
Im Moment findet nur ein just-in-time Syntaxprüfung während der Laufzeit und eine Prüfung auf korrektes Labeling vor Programmstart statt..
Ich gebe aber zu: An der Semantik werd ich mir woh loder übel die Zähne ausbeissen....

Was ist an meinem Programm keine Turingmaschine ?

Naja, eine kleine Kurzdoku ist ja dabei...
Oder lade einfach mal das Additions Beispielprogramm....

Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Jack Falworth
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222

Win XP Pro, Slackware 10.0
D5 Enterprise, C++, ABAP
BeitragVerfasst: Fr 26.03.04 20:25 
catweasel hat folgendes geschrieben:

Häh?... Bei nem IBM Rechner sind die Befehle doch auch schon vorgegeben.. ein PUSH/POP heissen eben PUSH un POP und nich PISH und SEX ;-)


Das mit dem "vorgegeben" hab ich im Zusammenhang mit Compiler gebraucht.
Und ich finde, dass das kein Compiler ist. Die lexikalische Analyse kann man ja einfach umgehen, weil man theoretisch nur prüfen muss, was in der jeweiligen Box drinsteht. Bei der Syntax kann man auch nicht viel falsch machen, weil ja alles schon vorgegeben ist, also das zuerst der Befehl steht und dann der Parameter.

catweasel hat folgendes geschrieben:

Was ist an meinem Programm keine Turingmaschine ?


Definition nach Alan Turing

Eine Turingmaschine ist ein 7-Tupel T = ( X, B, Z, q, b, z0, Ze), wobei gilt:

- X ist eine nichtleere, endliche Menge, das Eingabealphabet,
- X Teilmenge/gleich B ist eine nichtleere, endliche Menge, das Bandalphabet,
- Z ist eine nichtleere, endliche Menge, die Zustandsmenge,
- q: (Z/Ze) x B -> B x {L, N, R} x Z ist eine Funktion, die Überführungsfunktion, welche jedem Paar (Zustand,
gelesenes Zeichen) ein Tripel (zu schreibendes Zeichen, Kopfbewegung, Folgezustand) zuordnet,
- b Element B \ X ist das Leerzeichen oder Blank,
- z0 Element Z ist der Anfangszustand
- Ze Teilmenge/gleich ist die Endzustandsmenge


oder für den Durchschnittsbürger:

Eine TURING-Maschine läßt sich wie folgt beschreiben:
ein beidseitig unbegrenztes Band, das in Felder aufgeteilt ist.
Jedes Feld kann ein Zeichen aus einem endlichen Alphabet oder ein Leerzeichen aufnehmen.
Auf dem Band bewegt sich ein Schreib-Lesekopf, dabei kann genau das Feld unter dem Kopf gelesen oder beschrieben werden; Danach bewegt sich der Kopf maximal um eine Position nach links oder rechts.
Ein Programm gibt die Berechnungsschritte an. Bei der Berechnung kann nur eine endliche Menge von Zuständen angenommen werden.


Frage beantwortet?


MfG

Jack Falworth

_________________
Andere zu kritisieren ist mitunter eine Möglichkeit, sich selbst ins bessere Licht zu setzen.
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Fr 26.03.04 20:50 
Zitat:
ein beidseitig unbegrenztes Band, das in Felder aufgeteilt ist.
Jedes Feld kann ein Zeichen aus einem endlichen Alphabet oder ein Leerzeichen aufnehmen.
Auf dem Band bewegt sich ein Schreib-Lesekopf, dabei kann genau das Feld unter dem Kopf gelesen oder beschrieben werden; Danach bewegt sich der Kopf maximal um eine Position nach links oder rechts.
Ein Programm gibt die Berechnungsschritte an. Bei der Berechnung kann nur eine endliche Menge von Zuständen angenommen werden

Abgesehen von dem unbegrenzten Band macht mein Programm das doch alles, oder ? Das Band ist bei eben begrenzt .. Eigentlich hab ich sogar 3 Bänder.. Bildschirm, Festplatte, Hauptspeicher... Der Stack ist ein weiteres einseitig unbegrenztes Band...

Zitat:
Die lexikalische Analyse kann man ja einfach umgehen, weil man theoretisch nur prüfen muss, was in der jeweiligen Box drinsteht. Bei der Syntax kann man auch nicht viel falsch machen, weil ja alles schon vorgegeben ist,

Oh doch kann man....
Man kann beispiesweise zu einer nicht vorhandenen Zeilennummer/Label springen wollen..
Naja, alles was vorgegeben ist, ist der Name des Opcode... Ich habe lediglich eine Combobox draus gemacht für etwas mehr Komfort.. (Wer will schon ewig ne Liste aller Opcodes neben dem Rechner liegen haben)....
Bei Popov kannst du alles per Combobox auswählen, da sind keine grossartigen Fehler möglich..
Bei mir müssen aber alle Operanden per hand eingegeben werden und es muss geprüft werden was in den Feldern steht, z.b. ob SDX ein gültiger Registername ist oder nur ein Schreibfehler.....
Man kann bei meinem Assembler auch z.b. einen Wert nur per PUSH in den Speicher schieben der aus einem Register kommt..
ein PUSH 5 11 (würde den Wert 11 an Speicherstelle 5 schreiben wenns ginge ;-) ) geht also nicht... es müsste heissen z.b.
MOV EAX 11
PUSH 5 EAX
Also mann kann sehr viel falsch machen und das wird eben schon teilweise gecheckt...

Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Jack Falworth
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222

Win XP Pro, Slackware 10.0
D5 Enterprise, C++, ABAP
BeitragVerfasst: Sa 27.03.04 13:36 
ich glaub ich gebs auf.

Schau dir einfach mal ein Turing Simulator an, dann weißt du was ich meine.

Es ist einfach kein Compiler, aber ich hab keine Lust mehr mit dir weiter zu streiten.
Nur soviel: Na klar kann man in deinem Prog viel falsch machen. Du meinst damit aber nur die Reihenfolge der Befehle. Das ist aber nur für die semantische Analyse von Bedeutung. Man kann keine Befehle falsch schreiben oder falsche Parameter angeben (Zeichen, Symbole). Das ist normalerweise die Aufgabe eines Lexers und Parsers. Token, die nicht in die Syntax passen aufzufinden und den Anwender dann zu informieren. Das gibt es einfach in deinem Prog nicht. Also ist es kein Compiler, weil über die Hälfte fehlt!

MfG

Jack Falworth

_________________
Andere zu kritisieren ist mitunter eine Möglichkeit, sich selbst ins bessere Licht zu setzen.
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Sa 27.03.04 15:03 
Zitat:
ich glaub ich gebs auf.

Na was denn ? so schnell ;-)

Zitat:
Nur soviel: Na klar kann man in deinem Prog viel falsch machen. Du meinst damit aber nur die Reihenfolge der Befehle. Das ist aber nur für die semantische Analyse von Bedeutung. Man kann keine Befehle falsch schreiben oder falsche Parameter angeben (Zeichen, Symbole).

Natürlich kann man... Niemand hindert dich daran MOF einzugeben anstelle von MOV und das hat nix mit der Reihenfolge von Befehlen zu tun...

Zitat:
Also ist es kein Compiler, weil über die Hälfte fehlt!

Das Fehlen einiger Dinge in dieser Version wurde von mir schon an unzähligen Stellen hingewiesen....

Catweasel

ps: Lass mich raten.. Deine Sigantur hängt auch bei dir überm Bett... handgehäkelt.... ;-)

pps: Das wir steiten wusste ich gar nicht.. Hättest du auch mal früher sagen können :D

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Jack Falworth
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222

Win XP Pro, Slackware 10.0
D5 Enterprise, C++, ABAP
BeitragVerfasst: Sa 27.03.04 16:22 
catweasel hat folgendes geschrieben:
ps: Lass mich raten.. Deine Sigantur hängt auch bei dir überm Bett... handgehäkelt.... ;)


Das ist alles Teil meiner genialen "Im Stillen unbemerkt die Welt an mich reißen" Taktik
und es macht natürlich auch unheimlich spaß :D

catweasel hat folgendes geschrieben:

pps: Das wir steiten wusste ich gar nicht.. Hättest du auch mal früher sagen können :D


Aneinander vorbeireden wäre vielleicht der bessere Ausdruck ;)

MfG

Jack Falworth

_________________
Andere zu kritisieren ist mitunter eine Möglichkeit, sich selbst ins bessere Licht zu setzen.