Язык Си для троичного компьютера

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

Moderator: haqreu

aviator
Maniac
Posts: 298
Joined: 10 Dec 2008 08:39
Location: Стокгольм, Швеция

Re: Язык Си для троичного компьютера

Post by aviator »

Так вот значит откуда родом индусский код:

Code: Select all

if (a == true) { ... } else if (a == false) { ... } else { ... }
Вообще, Си и ему подобные языки базируются на двоичной арифметике. Если делать компилятор Си для троичного компьютера, то сгенерированный код должен иметь такое же поведение, как в двоичном компьютере. Мы же про совместимость? Или?
Тащить Си имеет смысл только радо использоваться всего того багажа исходных текстов, что написали за последние десятилетия.
С уважением, Сергей.
User avatar
Shaos
Admin
Posts: 24082
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Язык Си для троичного компьютера

Post by Shaos »

Ну будут программы, которые просто перекомпилируются, будут такие, что потребуют некоторой «обработки напильником» и будут новые, специально написанные под троичность - надо поддержать все три категории!

По типам мне мыслится так:
  • слова signed и unsigned просто игнорируется (потом можно сделать опцию поддержки программной эмуляции переполнений)
  • char - 6 тритов
  • short - 12 тритов
  • long - 24 трита
  • long long - 48 тритов (будущее)
  • float - 24 трита (будущее)
  • double - 48 тритов (далёкое будущее)
  • long double - 60 тритов (очень далёкое будущее)
  • int по умолчанию будет равен short, но параметрами командной строки можно задать его равным char, long или даже long long
По идее можно сделать размер int выбираемым произвольно с шагом 6 тритов (6,12,18,24,30,36,42,48,54,60,66) - в этом случае появится возможность поддержки "тритовых" полей в существующих программах с битовыми полями, когда использовались либо 16-битные целые (тогда выбираем размер int равным 18 тритов), либо 32-битные целые (тогда выбираем размер int равным 36 тритов), либо 64-битные целые (тогда выбираем размер int равным 66 тритов)...

P.S. Кстааати! Тут можно попробовать реализовать мою старую идею про динамический размер типа int где размерность целых чисел растёт по мере вычислений, если нужно - причём для 3-тритной архитектуры можно идти даже с шагом в 3 трита, а первую триаду использовать как тэг с указанием размерности в триадах и в пределе размер может достигать 27*3=81 трит :o

P.P.S. Либо отвести 3 значения из 27 в тэге под возможность использования 1-тритного целого с сохранением его значения непосредственно в тэге, тогда максимальная размерность динамических целых может составлять 24*3=72 трита...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24082
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Язык Си для троичного компьютера

Post by Shaos »

Про русский Си перенёс в Software: viewtopic.php?f=81&t=22457
Я тут за главного - если что шлите мыло на me собака shaos точка net
aviator
Maniac
Posts: 298
Joined: 10 Dec 2008 08:39
Location: Стокгольм, Швеция

Re: Язык Си для троичного компьютера

Post by aviator »

слова signed и unsigned просто игнорируется (потом можно сделать опцию поддержки программной эмуляции переполнений)
"...Ноль программистов ругал сердитый шеф, потом уволил одного и стало их FF..."
Использование побочных эффектов арифметики в Си я видел везде, особенно на 8-ми и 16-битных платформах. Чтобы хоть как-то было совместимо по исходным кодам, придётся скрупулёзно всё повторять.
Да вот даже в текущем проекте, сторонние разработчики упоролись подобным образом с операциями над high precision timestamp. И это на 32-х разрядном Cortex-M4.
С уважением, Сергей.