Продолжим обсуждение симулятора.
Можно хранить числа представленными в уравновешенной троичной системе счисления (используя для обозначения состояния разрядов латинские буквы N,O и P) в естественном порядке (слева направо от старших к младшим) заполняя разряды слева нулями. Для работы с числами предлагается следующий минимальный набор арифметических и вспомогательных операций:
1. Обнулить
x (
Clear)
2. Инвертировать
x (
Negate)
3. Копировать
x в
y (
Copy)
4. Копировать
x в
y с инвертированием (
CopyN)
5. Сравнить
x и
y (
Compare)
6. Сдвинуть
x вправо (разделить на три), предварительно скопировав младший разряд во флаг переноса
c, затем поместить в старший разряд 0 (
ShiftR)
7. Сдвинуть
x влево (умножить на три), предварительно скопировав старший разряд во флаг переноса
c и затем поместить в младший разряд 0 (
ShiftL)
8. Сложить
x и
y, поместив сумму в
z (
Add)
9. Вычесть
x из
y, поместив разность в
z (
Subtract)
10. Умножить
x на
y, поместив произведение в
z (
Multiply)
11. Разделить
x на
y, поместив целую часть частного в
z, а остаток в
x (
Divide)
На мой взгляд это минимум, в котором есть все, что может потребоваться для работы. Возражения есть ?
P.S. Прошу не путать перечисленные операции
с инструкциями процессора!