Autor Beitrag
CK_CK
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Di 05.02.08 20:46 
Hallo,
ich habe mich über das Wochenende daran gesetzt, den Know How Computer vom Computerclub (muss man nicht kennen, ist schon etwas älter ;)) nachzuprogrammieren; natürlich besser und mit mehr Funktionen ;)
Zitat von der Seite:
Zitat:
Wenn Sie später in die Assemblersprache einsteigen wollen, so ist der Knowhow – Computer das richtige Lernmittel, um Denkstrukturen in Maschinensprache zu trainieren.


Es wird eine einfache Assembler-Ähnliche Programmiersprache und die Zugriffe auf Speicher-Register simuliert.
Visualisiert wird das ganze durch "Streichhölzer", die in die verschiedenen Register gefüllt werden.

Die Befehle
Befehl | Bedeutung | Beschreibung
jmp | Jump | Setzt den Programmzeiger auf die angegebene Position.
isz | Is Zero | Prüft, ob das angegebene Register null ist. Wenn ja springt der Programmzeiger zwei Schritte weiter, ansonsten nur einen.
inc | Increment | Erhöht das angegebene Register um 1.
dec | Decrement | Verringert das angegebene Register um 1.
stp | Stop | Beendet das Programm.

Funktionen
  • Importieren des alten Dateiformats vom Original-Programm
  • Anzeigen des Programmzeigers mit Pfeil
  • Steuern des Programms (Einzelschritte/Kompletter durchlauf)
  • Steuern der Ablaufgeschwindigkeit (zum leichteren Verstehen der Programme)
  • Zeilen im Programm hinzufügen/löschen mit automatischer Neuberechnungen der jmp-Adressen
  • Kommentieren der Programme
  • Anzahl der Register festlegen
  • Datentyp der Register festlegen
    • Byte (8 bit, unsigned ~ 0 - 255)
    • ShortInt (8 bit, signed ~ -127 - 127)
    • Word (16 bit, unsigned ~ 0 - 65535)
    • SmallInt (16 bit, signed ~ -32768 - 32767)

  • Verknüpfen mit den Programmdateien (neues und/oder altes Format)

Screenshot
user defined image

Beispiel-Programm (Kopiert Register 1 nach Register 2)
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
01: isz 2 //Ist Register 2 null?
02: jmp 4 //Nein? Dann zu Zeile 4 springen
03: jmp 7 //Ja? Dann zu Zeile 7 springen
04: dec 2 //Register 2 um 1 verringern
05: jmp 1 //Nach Zeile 1 springen
06: 
07: isz 1 //Ist Register 1 null?
08: jmp 10 //Nein? Dann zu Zeile 10 springen
09: jmp 15 //Ja? Dann zu Zeile 15 springen
10: dec 1 //Register 1 um 1 verringern
11: inc 2 //Register 2 um 1 erhoehen
12: inc 3 //Register 3 um 1 erhoehen
13: jmp 7 //Zurueck zu Zeile 7 springen
14: 
15: isz 3 //Ist Register 3 null?
16: jmp 18 //Nein? Dann zu Zeile 18 springen
17: stp //Ja? Dann ist das Programm fertig => STOP
18: dec 3 //Register 3 um 1 verringern
19: inc 1 //Register 1 um 1 erhoehen
20: jmp 15 //Zurueck zu Zeile 15 springen

Erklaerung:
1-5: R2 := 0
7-13: R1 nach R2 und R3 kopieren, R1 wird geleert
15-20: R3 nach R1 verschieben


Links
> Direkt-Download [Version 1.0 RC3] (1.06 MB) <- Einige Beispielprogramme sind schon mit dabei ;)
> Programm-Beschreibung, mehr Screenshots und Changelog

So, nun hoffe ich, dass jemand was mit dem Programm anfangen kann... ;)

Chris


Zuletzt bearbeitet von CK_CK am Fr 08.02.08 16:22, insgesamt 1-mal bearbeitet
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Mi 06.02.08 16:39 
Sooo, es gibt schon eine neue Version...

Version 1.0 RC2
+ Kurzreferenz hinzugefügt
* Beim Öffnen von Dateien wurden nicht genug neue Zeilen angelegt
* Die Datentypen wurden nicht richtig übernommen

Viele Grüße,
Chris
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 08.02.08 16:24 
Ich habe wieder eine neue Version mit vielen neuen Funktionen veröffentlicht:

Version 1.0 RC3
+ Exportieren ins Original-Dateiformat hinzugefügt
+ Exportieren als Textdatei hinzugefügt
+ Druckfunktion hinzugefügt
+ Versionscheck hinzugefügt
* Einige Verbesserungen im Quellcode

Würde mich über Kommentare freuen ;)

Viele Grüße,
Chris
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Fr 08.02.08 16:37 
Is' doch nur 'ne billige Brainfuck-Kopie :wink: .

(Bevor jetzt ein Aufschrei der Entrüstung durch's Forum geht: Mir ist klar, dass diese Aussage historisch unsinnig ist.)
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 08.02.08 16:42 
Sagen wir es ist ähnlich ;)
Der KnowHow-Computer hat im Gegensatz zu Brainfuck keine Konsole mit Ein- und Ausgabemöglichkeit...
Außerdem ist der Speicher direkt adressierbar und man muss nicht "spulen"...
...und die Syntax sieht hübscher aus (ist Assembler-Ähnlicher)...

Deswegen habe ich es auch parallel zu meinem Brainfuck-Interpreter geschrieben ;)

Chris
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Fr 08.02.08 17:00 
Ja, den hab ich mir auch schon angeschaut. Ganz nettes Teil, schreib lieber daran weiter :wink: .
Brainfuck hat doch eindeutig mehr Zukunft als ... ähm ... KnowHowComputerASM oder so.


Aber mal im Ernst: Nicht schlecht. Nur ein kleiner Hinweis: 8 Bit signed hat einen Wertebereich von -128 bis 127 (im Programm richtig, aber hier in deinem ersten Post, in der pdf und im Menü falsch).