Обновить

«Я Сетунь 70». Эмулятор троичного компьютера на Rust

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели15K
Всего голосов 18: ↑17 и ↓1+22
Комментарии7

Комментарии 7

Примите меня в игру: а как тогда писать программы для данного эмулятора? Понимаю, что большинство языков программирования заточены именно под двоичную систему, но будет ли, например, компилятор Си для архитектуры Сетунь-70?

Ух, какой интересный вопрос, и сразу про всё :)

Если вопрос "как написать прямо сейчас", то ответ будет примерно такой: какого-то общего обучающего документа пока нет. Но в эмуляторе есть рудиментарный ассемблер и если скормить исходники эмулятора ИИ и попросить его разобраться с системой команд и что-то несложное написать, то вполне может выйти толк.

Вопрос насчет Си-подобного языка неоднократно поднимался и пока не кажется что это принципиально невозможно и компиляторе не может быть вообще, но надо будет приложить немало усилий, чтобы он получился. Однако, скорее всего он будет отличаться от своего исходного двоичного прародителя и потребуется ввести новые типы данных и научиться избавляться от искусственно введенных костылей, вроде функций abs(), которые не имеют особого смысла в троичной системе.
А вот взять и собрать какой-нибудь старый линукс для Сетуни 70, кажется невозможным или очень затруднительным и неизбежно потребует полной замены достаточного большого количества исходных функций, ориентированных на обработку двоичных форматов чисел и символов в кодировке ASCII. Из-за различия в представлении чисел перестанет работать вообще вся логика и арифметика использующая сдвиги, маски, логические И, исключающие ИЛИ и т.п. - результат их работы будет совсем не тем, что ожидается.

Но это ведь только если не думать об отрицательных числах (+1 разряд или еще больше)

не понял почему обязательно +1 разряд? дополнение до двойки вроде как не имеет отдельного знакового разряда?

Даже без знакового разряда - все равно для того чтобы кроме 255 положительных чисел записать 255 отрицательных - нужен еще один разряд. Просто потому, что на 511 чисел нужно на 1 двоичный бит больше чем на 255

Насколько я помню, в университете на первом курсе мы математически высчитывали максимально эффективную разрядность ЭВМ. И там получилось, что самыми эффективными будут вычисления по основанию e (2.72...), что ближе к 3, а не к 2. И Сетунь как раз и был прототипом, чтобы проверить это на практике. В итоге получилось, что сложность машины сильно перевешивала эффективность вычислений.

«Сетунь» вовсе не была прототипом, она выпускалась промышленно с 1962 по 1964 гг. Всего было произведено и поставлено около 50 экземпляров в разные регионы СССР. Кроме того машина появилась как своеобразный ответ на сложность и несовершенство двоичных машин того времени, и схемотехнически была не сложнее, а наоборот - проще, и кроме того надежнее двоичных ЭВМ аналогичного класса.

вопросом представления чисел в уравновешенной троичной системе счисления, то скорее всего знаете про два наиболее часто встречающихся варианта: «пара бит на один трит» и «знаковые слои» (что в принципе сводится к той же паре бит на один трит, но уже при иной организации).

А что мешает использовать основание 3^5=243 и по байтам распихать, 5 тритов в 1 байт. А для ALU использовать таблицы?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации