29.3.2.1. Základní instrukce

Jak je vidět na obrázku 29.2 – „Formáty instrukcí SOC-8“ v základním tvaru instrukce jsou pro operační kód k dispozici pouze 3 bity. To nám dává 8 možných kombinací. Minimálně jedna musí být použita pro další tavari instrukcí jako jsou například „mikokódované“ instrukce. Tím se prostor ještě zmenší. Při výběru jsem vycházel z instrukční sady PDP-8 kterou jsem se snažil modifikovat. PDP-8 má tyto instrukce:

0xxx  AND   ; operand ∧ AC → AC
1xxx  TAD   ; operand + AC → AC
2xxx  ISZ   ; increment operand and skip if zero
3xxx  DCA   ; AC → pameť, 0 → AC
4xxx  JMS   ; skok do podprogramu
5xxx  JMP   ; skok
6xxx  IOT   ; I/O instrukce
7xxx  OPR   ; mikrokódované instrukce

Nejprve jsem zvážil odstranit instrukci IOT. Domnívám se, že se I/O zařízení dají připojit jako část paměti. Ušetřím tím právě jednu kombinaci pro jinou instrukci. Pokud bych chtěl instrukci IOT mohl bych ji realizovat v prostoru mikrokódovaných instrukcí například jako:

 11  10   9   8   7   6   5   4   3   2   1   0
+---+---+---+---+---+---+---+---+---+---+---+---+
| 1   1   1 |    IOT    |    DEV    |    FCE    |   "mikrokódované" instrukce
+---+---+---+---+---+---+---+---+---+---+---+---+

Oproti PDP-8 snížím množství dostupných zařízení z 64 na 8.

Další úsporou v instrukční sadě je sjednotit instrukce JMS a JMP do jedné instrukce BAL. Tato instrukce je modelována podle BAL isntrukce například z procesoru MIPS. Jedná se o instrukci skoku která do speciálního registru L uloží adresu instrukce následující po instrukci skoku. Tedy návratovou adresu. Cíl skoku, je-li to procedura či funkce, je pak zodpovědný za uschování této adresy.

        ...
        BAL FCE  ; volání podprogramu
        NOP      ;← zde se pokračuje po návratu
        ...
FCE:    ; ulož L do zásobníku
        ... proveď co je potřeba
FLOOP:  ; nějaká smyčka
        BAL FLOOP
        ; obnov L ze zásobníku
        ; prověď skok na adresu v L
Licence Creative Commons
Elektronika a počítače, jejímž autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .