Guten Morgen,
hab gerade mal einwenig im Zug an der Idee gearbeitet. Was dabei heraus kam ist folgendes. Die Programmiersprache soll Anlehnungen an Assembler, Basic und BrainFuck haben. Der Interpreter soll ähnlich wie ein Brainfuck interpreter in C programmiert sein oder wie eine einfache Virtuelle Maschine (einfach mal in den Bochs Quelltext hineinschauen).
Es soll eine Art managed Assembler entstehen das in einer VM läuft und Basic ähnliche befehle bietet.
Hab mir überlegt verschiedene Virtuelle Register mit unterschiedlichen größen bereit zustellen, aber eventuell sollte ich diese Idee verwerfen... das sollte vll. doch die VM alles lösen.
Hier meine groben Überlegungen zu der Bytecodesprache:
;register
0x00 to 0x09 10x 8 bit register
0x10 to 0x19 10x 16 bit register
0x20 to 0x29 10x 32 bit register
0x30 to 0x39 10x 64 bit register
;relational operator
0x00 >
0x01 <
0x02 >=
0x03 <=
0x04 ==
0x05 !=
;managed bytecode
0x00 close programm
0x01 to 0x10 reserved
0x11 add (register, value)
0x12 sub (register, value)
0x13 mul (register, value)
0x14 div (register, value)
0x15 inc (register)
0x16 dec (register)
0x17 mov (register, egister)
0x18 for (operator, register"value left", register"value right", register"step")
0x19 endfor
0x20 if (operator, register"value left", register"value right")
0x21 elseif (operator, register"value left", register"value right")
0x22 else
0x23 endif
Beispiele:
IF reg0 >= reg1 THEN ... ENDIF
{0x20, 0x02, 0x00, 0x01, ..., 0x23}
FOR reg0 < reg1 STEP reg2 ... ENDFOR
{0x18, 0x01, 0x00,0x01,0x02, ..., 0x19}
Gruß
Remake