Эмулятор троичной ЭВМ

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Эмулятор троичной ЭВМ

Post by Shaos »

Mac Buster wrote: Переходим к логическим командам. Собственно, она всего одна, рабочее название мнемоники - tlog (от trinary или ternary logic). Макросами определяются узкоспециализированные варианты команды: max, mid, min, mask, shift up, shift down И т.п.

Возражения есть ?
Две команды - унарная (конкретная функция задается тремя тритами) и бинарная (конкретная функция задается девятью тритами)
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Эмулятор троичной ЭВМ

Post by Mac Buster »

По-моему все-таки она одна. Унарная получается из бинарной подстановкой "пустого" операнда.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Эмулятор троичной ЭВМ

Post by Shaos »

Mac Buster wrote: По-моему все-таки она одна. Унарная получается из бинарной подстановкой "пустого" операнда.
Это значит 6 трайтов никому не нужной пустоты
Alexandr
Novelist
Posts: 34
Joined: 20 Oct 2005 18:46

Re: Эмулятор троичной ЭВМ

Post by Alexandr »

Не знаю насколько уместно мое предложение.
Однако, считаю хорошей отправной точкой послужила бы реализация эмуляции МЦВМ Сетунь-70.
Во-первых, это реально работающая машина.
Во-вторых, это уже второе поколение троичных машин.
В-третьих, даже имея материал представленный на сайте computer-museum.ru, позволяет в общих чертах составить представление о методах ее реализации в виде эмулятора.
http://www.computer-museum.ru/histussr/0.htm
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Эмулятор троичной ЭВМ

Post by Shaos »

Alexandr wrote: Не знаю насколько уместно мое предложение.
Однако, считаю хорошей отправной точкой послужила бы реализация эмуляции МЦВМ Сетунь-70.
Во-первых, это реально работающая машина.
Во-вторых, это уже второе поколение троичных машин.
В-третьих, даже имея материал представленный на сайте computer-museum.ru, позволяет в общих чертах составить представление о методах ее реализации в виде эмулятора.
http://www.computer-museum.ru/histussr/0.htm
Вот если бы был доступен софт - можно было бы и эмулятор сетуни написать ;)
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Эмулятор троичной ЭВМ

Post by Mac Buster »

Shaos wrote:
Вот если бы был доступен софт - можно было бы и эмулятор сетуни написать ;)
Это дело, кстати, не такое уж невозможное. В свете моей вероятной поездки к Брусенцову. Сейчас ему напишу, узнаю, что сохранилось. Возможно и в самом деле стоит написать эмулятор "Сетуни" или "Сетуни-70".
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Эмулятор троичной ЭВМ

Post by Mac Buster »

Продолжим обсуждение симулятора.

Можно хранить числа представленными в уравновешенной троичной системе счисления (используя для обозначения состояния разрядов латинские буквы 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)

На мой взгляд это минимум, в котором есть все, что может потребоваться для работы. Возражения есть ? :-D

P.S. Прошу не путать перечисленные операции с инструкциями процессора!
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Эмулятор троичной ЭВМ

Post by Shaos »

Сдвиг предлагаю сделать через регистр переноса - т.е. не ноль помещать в высвобождающийся трит, а то что было в переносе, а в перенос заталкивать сдвинутый трит - иначе нельзя будет реализовать расширяемые арифметические операции. И чтобы упростить реализацию переноса с обнулением надо иметь короткие команды инициализации флага переноса. Копирование с инвертированием можно убрать. Вычитание можно заменить сложением с инвертированным вторым аргументом. Чтобы не захломлять результатом умножения один из аргументов предлагаю вместо регистров XYZ ввести регистры аргументов A и B и два регистра результата L (младшее слово) и H (старшее слово). И еще надо сделать сложение и вычитание с использованием переноса.
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Эмулятор троичной ЭВМ

Post by Mac Buster »

Shaos wrote: Сдвиг предлагаю сделать через регистр переноса - т.е. не ноль помещать в высвобождающийся трит, а то что было в переносе, а в перенос заталкивать сдвинутый трит - иначе нельзя будет реализовать расширяемые арифметические операции.
В самом деле, что это я ? Принято.
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Эмулятор троичной ЭВМ

Post by Mac Buster »

Получена первая версия эмулятора троичной машины!
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Эмулятор троичной ЭВМ

Post by Mac Buster »

Все чаще приходит мысль ввести дополнительную команду для определения чётности числа (нечётное, нуль, чётное). Как вы на это смотрите ?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Эмулятор троичной ЭВМ

Post by Shaos »

Mac Buster wrote: Все чаще приходит мысль ввести дополнительную команду для определения чётности числа (нечётное, нуль, чётное). Как вы на это смотрите ?
Вроде ноль четным всегда считался...
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Эмулятор троичной ЭВМ

Post by Mac Buster »

Shaos wrote: Вроде ноль четным всегда считался...
Ноль - ничто (латынь), отсутствие цифры, пустое место (арабский). Следовательно не обладает свойствами числа.