Две команды - унарная (конкретная функция задается тремя тритами) и бинарная (конкретная функция задается девятью тритами)Mac Buster wrote: Переходим к логическим командам. Собственно, она всего одна, рабочее название мнемоники - tlog (от trinary или ternary logic). Макросами определяются узкоспециализированные варианты команды: max, mid, min, mask, shift up, shift down И т.п.
Возражения есть ?
Эмулятор троичной ЭВМ
Moderator: haqreu
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Эмулятор троичной ЭВМ
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Re: Эмулятор троичной ЭВМ
По-моему все-таки она одна. Унарная получается из бинарной подстановкой "пустого" операнда.
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Эмулятор троичной ЭВМ
Это значит 6 трайтов никому не нужной пустотыMac Buster wrote: По-моему все-таки она одна. Унарная получается из бинарной подстановкой "пустого" операнда.
-
- Novelist
- Posts: 34
- Joined: 20 Oct 2005 18:46
Re: Эмулятор троичной ЭВМ
Не знаю насколько уместно мое предложение.
Однако, считаю хорошей отправной точкой послужила бы реализация эмуляции МЦВМ Сетунь-70.
Во-первых, это реально работающая машина.
Во-вторых, это уже второе поколение троичных машин.
В-третьих, даже имея материал представленный на сайте computer-museum.ru, позволяет в общих чертах составить представление о методах ее реализации в виде эмулятора.
http://www.computer-museum.ru/histussr/0.htm
Однако, считаю хорошей отправной точкой послужила бы реализация эмуляции МЦВМ Сетунь-70.
Во-первых, это реально работающая машина.
Во-вторых, это уже второе поколение троичных машин.
В-третьих, даже имея материал представленный на сайте computer-museum.ru, позволяет в общих чертах составить представление о методах ее реализации в виде эмулятора.
http://www.computer-museum.ru/histussr/0.htm
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Эмулятор троичной ЭВМ
Вот если бы был доступен софт - можно было бы и эмулятор сетуни написатьAlexandr wrote: Не знаю насколько уместно мое предложение.
Однако, считаю хорошей отправной точкой послужила бы реализация эмуляции МЦВМ Сетунь-70.
Во-первых, это реально работающая машина.
Во-вторых, это уже второе поколение троичных машин.
В-третьих, даже имея материал представленный на сайте computer-museum.ru, позволяет в общих чертах составить представление о методах ее реализации в виде эмулятора.
http://www.computer-museum.ru/histussr/0.htm

-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Re: Эмулятор троичной ЭВМ
Это дело, кстати, не такое уж невозможное. В свете моей вероятной поездки к Брусенцову. Сейчас ему напишу, узнаю, что сохранилось. Возможно и в самом деле стоит написать эмулятор "Сетуни" или "Сетуни-70".Shaos wrote:
Вот если бы был доступен софт - можно было бы и эмулятор сетуни написать![]()
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Re: Эмулятор троичной ЭВМ
Продолжим обсуждение симулятора.
Можно хранить числа представленными в уравновешенной троичной системе счисления (используя для обозначения состояния разрядов латинские буквы 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. Прошу не путать перечисленные операции с инструкциями процессора!
Можно хранить числа представленными в уравновешенной троичной системе счисления (используя для обозначения состояния разрядов латинские буквы 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. Прошу не путать перечисленные операции с инструкциями процессора!
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Эмулятор троичной ЭВМ
Сдвиг предлагаю сделать через регистр переноса - т.е. не ноль помещать в высвобождающийся трит, а то что было в переносе, а в перенос заталкивать сдвинутый трит - иначе нельзя будет реализовать расширяемые арифметические операции. И чтобы упростить реализацию переноса с обнулением надо иметь короткие команды инициализации флага переноса. Копирование с инвертированием можно убрать. Вычитание можно заменить сложением с инвертированным вторым аргументом. Чтобы не захломлять результатом умножения один из аргументов предлагаю вместо регистров XYZ ввести регистры аргументов A и B и два регистра результата L (младшее слово) и H (старшее слово). И еще надо сделать сложение и вычитание с использованием переноса.
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Re: Эмулятор троичной ЭВМ
В самом деле, что это я ? Принято.Shaos wrote: Сдвиг предлагаю сделать через регистр переноса - т.е. не ноль помещать в высвобождающийся трит, а то что было в переносе, а в перенос заталкивать сдвинутый трит - иначе нельзя будет реализовать расширяемые арифметические операции.
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Re: Эмулятор троичной ЭВМ
Получена первая версия эмулятора троичной машины!
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Re: Эмулятор троичной ЭВМ
Все чаще приходит мысль ввести дополнительную команду для определения чётности числа (нечётное, нуль, чётное). Как вы на это смотрите ?
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Эмулятор троичной ЭВМ
Вроде ноль четным всегда считался...Mac Buster wrote: Все чаще приходит мысль ввести дополнительную команду для определения чётности числа (нечётное, нуль, чётное). Как вы на это смотрите ?
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Re: Эмулятор троичной ЭВМ
Ноль - ничто (латынь), отсутствие цифры, пустое место (арабский). Следовательно не обладает свойствами числа.Shaos wrote: Вроде ноль четным всегда считался...