-
Notifications
You must be signed in to change notification settings - Fork 0
/
spec.txt
26 lines (25 loc) · 1.24 KB
/
spec.txt
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
26
Ein Kern besteht aus x*y Zellen
Eine Zelle besteht aus:
Command | Arg1 | Arg2
Args haben Typen.
Arg1 ist der Wert eines Commands.
Arg2 ist der Ort eines Commands.
Die Argumente sind immer nur Zahlen, der Unterschied zw den Typen ist nur, wie sie interpretiert werden:
Wenn man nichts davor schreibt ist es einfach eine Zahl.
@ (ARG->CMD) macht es zu einer Addresse im derzeitigen Core.
^ (ARG->CMD) macht es zu einer Addresse im oberen Core.
> (ARG->CMD) macht es zu einer Addresse im rechten Core.
v (ARG->CMD) macht es zu einer Addresse im unteren Core.
< (ARG->CMD) macht es zu einer Addresse im linken Core.
' (CMD->ARG) macht es zu der Zahl an Stelle 1 an einer Addresse wenn links
" (CMD->ARG) macht es zu der Zahl an Stelle 2 an einer Addresse wenn links.
Der Kern besitzt einen pc, der durch jump-befehle manipuliert werden kann.
NOP - tut nichts, gut zum zahlenspeichern
NEG - Negiert die Zahl bei arg2
ADD - addiert arg1 zu arg2 (ergebnis bei arg2)
SUB - subtrahiert arg1 von arg2 (ergebnis bei arg2)
MUL - multipliziert arg1 und arg2 (ergebnis bei arg2)
DIV - dividiert ganzzahlig arg1 von arg2 (ergebnis bei arg2)
MOV - schreibt arg1 an arg2 Stelle
JMP - Springt wenn arg1 stimmt nach arg2
OUT - printet arg2 wenn arg1