Code: Троичный процессор ~~~~~~~~~~~~~~~~~~
Для записи команд и хранения данных используется троичная уравновешенная система счисления, где:
-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) |