

Code: Select all
Троичный процессор
~~~~~~~~~~~~~~~~~~
Для записи команд и хранения данных используется троичная уравновешенная система счисления, где:
-1 = N
0 = 0
+1 = P
Все команды выполняются за один такт процессора. Память для команд, данных и стека разделены на независимые области.
Есть девять 18-разрядных равноправных регистров:
- GR00, GR01, GR02, GR10, GR11, GR12, GR20, GR21, GR22
а также:
- счетчик команд PC
- указатель стека SP
- вектор прерывания IV
Флаги:
- результата сравнения CPF (N - меньше, 0 - равно, P - больше)
- займа-переполнения BCF (N - займ, 0 - нуль, P - переполнение)
Команды процессора:
~~~~~~~~~~~~~~~~~~~
none - нет операции
movw - пересылка слова из регистра в регистр
ldaw - загрузка слова в регистр из ячейки памяти
staw - сохранение слова из регистра в ячейке памяти
adds - сложение (с учётом знака)
addc - сложение (с учётом знака и переноса)
subs - вычитание (с учётом знака)
subc - вычитание (с учётом знака и переноса)
muls - умножение (с учётом знака)
mulc - умножение (с учётом знака и переноса)
divs - деление (с учётом знака)
divc - деление (с учётом знака и переноса)
brnc - безусловный переход
breq - переход только по равенству (CPF = 0)
brlt - переход только по < (CPF = N)
brgt - переход только по > (CPF = P)
brcc - переход по условию eq=label1, lt = label2, gt = label3
brsb - безусловный вызов подпрограммы
brse - вызов подпрограммы только по равенству (CPF = 0)
brsl - вызов подпрограммы только по < (CPF = N)
brsg - вызов подпрограммы только по > (CPF = P)
brsc - вызов подпрограммы по условию eq=label1, lt = label2, gt = label3
retn - безусловный возврат из подпрограммы
rete - возврат из подпрограммы только по равенству (CPF = 0)
retl - возврат из подпрограммы только по < (CPF = N)
retg - возврат из подпрограммы только по > (CPF = P)