FIXME:
Abychom rozuměli zápisu kódu pro náš virtuální procesor, musíme si definovat jeho jazyk, instrukce. Jazky který používám je podobný jazyku symbolických adres, assembleru, a jazyku C. Zápis je řádkově orientovaný. Každý řádek může obsahovat návěští, label, oddělený od zbytku řádku dvojtečkou. Za týmto nepovinným návěštím následuje pole instrukcí. Povoluji zápis více než jedné instrukce, v tomto případě jsou od sebe vzájemně odděleny středníkem ;
;. Za polem instrukcí může být kometář ve stylu komentářů v shellu či perlu. zápis tedy vypadá takto:
label: instrukce; instrukce # komentář
Instrukce přiřazení, tedy převodu hodnoty či hodnoty výrazu do registru nebo paměti je značena znakem → nebo ←, směr šipky označuje směr přesunu/zápisu hodnoty. Například přiřazení hodnoty 2 do registru W
zapíši
2 → W
nebo
W ← 2
Aritmetické a logické operace značím jak jste zvyklí z jiných jazyků:
A + 4 → B;
Čísla označují číselné hodnoty, konstanty. Názvy proměnných označují hodnoty v těchto proměnných uložené.
Odkaz na paměť se zapisuje do hranatých závorek. Zápis [W]
tedy označuje hodnotu jenž se nachází v paměti na adrese jenž je uložena v registru W
. Zápis [[W]]
je pak označení hodnoty jenž se nachází na adrese uložené v paměti na adrese jenž je uložena v registru W
. Zápis těchto dvou případů v jazyce C by vypadal takto *W
pro první a **W
pro druhý případ.
[A] [[W]] (A) ((W))