nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 23 Nov 2020 22:38



Reply to topic  [ 12 posts ] 
Язык Си для троичного компьютера 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Чего-то не могу тут на форуме найти свои мысли на тему программирования на Си для троичного компьютера, которые я изложил в 2008 году - вобщем создаю новый топик
Короче что изменится для программиста при использовании языка Си для троичного компьютера?
Да собственно ничего не изменится - разве что INT_MIN и INT_MAX будут другими (обычные типы данных char, short, int, long, long long, а также float и double будут охватывать чуть более широкие диапазоны)
Трюки беззнаковой арифметики перестанут работать (и вообще любые трюки с переполнениями - но при желании их можно сымитировать программно) - скорее всего char и unsigned char будут представлять один и тот же 6-тритный тип данных, а int для начала может быть 12-тритным
Для троичных сдвигов можно завести новые операторы <<< и >>> которые будут реализованы аппаратно, в отличие от двоичных << и >> которые будут заменяться при компиляции на *2^n и /2^n соответственно
А если надо будет иметь потритные операции, то видимо надо создавать какие-то макросы

P.S. Вот нашёл где обсуждали по английски: http://www.nedopc.org/forum/viewtopic.php?f=62&t=97

_________________
:eugeek: https://twitter.com/Shaos1973


29 May 2020 20:33
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
char / unsigned char -> 6 тритов (трайт)
short / unsigned short -> 12 тритов (трорд)
int / unsigned int для начала может быть равен short, как в старых 16-битных компиляторах
для представления 32-битного целого достаточно было бы 21 трита, хоть это и не кругло
а 64-битное целое (long long) влезет в 41 трит, но видимо надо будет брать 24 трита и 48 тритов соответственно (для единообразия)

P.S. с другой стороны можно сразу сделать int 24-тритным, а long 48-тритным (равным long long как в современных 64-битных компиляторах)

_________________
:eugeek: https://twitter.com/Shaos1973


29 May 2020 20:37
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Зачем это надо? А затем, чтобы можно было существующие программы компилировать под троичный процессор без существенной переделки (в идеале - вообще без переделки)

_________________
:eugeek: https://twitter.com/Shaos1973


30 May 2020 19:30
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Зачем это надо? А затем, чтобы можно было существующие программы компилировать под троичный процессор без существенной переделки (в идеале - вообще без переделки)

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

_________________
iLavr


01 Jun 2020 15:59
Profile
Maniac

Joined: 10 Mar 2017 06:30
Posts: 322
Reply with quote
Ничто из стандарта не является невыполнимым на абстрактном троичном компе. Не забываем только нюансы типа того, что инт это минимум 16 бит, и при этом такого размера, манипуляции с которым являются самыми быстрыми на данной архитектуре :egeek:

Кстати, начиная с этого года стандарт-таки предписал дополнительный код для хранения знаковых целых (но оставил переполнение UB :question: ).


01 Jun 2020 16:13
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
Зачем это надо? А затем, чтобы можно было существующие программы компилировать под троичный процессор без существенной переделки (в идеале - вообще без переделки)

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

Для "эффекта" надо писать троичные программы с нуля

Ну и потом арифметика ведь будет идти через троичное АЛУ - так что кое какие прелести таки будут "автоматически"

_________________
:eugeek: https://twitter.com/Shaos1973


01 Jun 2020 19:02
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Lavr wrote:
Shaos wrote:
Зачем это надо? А затем, чтобы можно было существующие программы компилировать под троичный процессор без существенной переделки (в идеале - вообще без переделки)

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

Для "эффекта" надо писать троичные программы с нуля

Совершенно не надо! Троичные "прелести" просто позволят сократить существующие программы.

Shaos wrote:
Ну и потом арифметика ведь будет идти через троичное АЛУ - так что кое какие прелести таки будут "автоматически"
Этого никто не заметит. Для рядового пользователя как складывались числа (или вычитались) - так оно и будет.
А дополнительные фишки троичности не будут доступны из существующих программ - их же там не было!

_________________
iLavr


01 Jun 2020 21:09
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Вот нашёл где обсуждали по английски: http://www.nedopc.org/forum/viewtopic.php?f=62&t=97

Также вставил линк в первый пост

_________________
:eugeek: https://twitter.com/Shaos1973


05 Jul 2020 21:44
Profile WWW
Junior
User avatar

Joined: 16 Nov 2020 11:04
Posts: 6
Reply with quote
Остается вопрос с побитовыми операциями...

Это что же, на чистой магии интерпретации, какие-нибудь двоичные 32х разрядные инты ПОБИТОВО переводить в троичные лонги(чтоб разрядов хватило) имеющие в разряде только -1 и 1, и применять логические потритовые операции? Но тогда мы не сможем совершать побитовые операции над двоичными лонгами, так как не хватает троичного целочисленного типа с количеством разрядов покрывающим этот лонг.

Или городить какие нибудь сложные структуры данных с булевыми массивами и циклами... И это я уже в ООП укатился...


16 Nov 2020 11:22
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Ну двоичные сдвиги будут выполняться через умножение на 2 и деление на 2

_________________
:eugeek: https://twitter.com/Shaos1973


18 Nov 2020 18:22
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Ну двоичные сдвиги будут выполняться через умножение на 2
Это лучше делать как сумму с самим числом.

Shaos wrote:
... и деление на 2
А вот тут так просто не получится... :-?

А зачем вобще нам ДВОИЧНЫЕ сдвиги? :roll:

_________________
iLavr


19 Nov 2020 05:44
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Lavr wrote:
А зачем вобще нам ДВОИЧНЫЕ сдвиги? :roll:

Многие программы их используют - если мы хотим полной переносимости, то надо поддержать

_________________
:eugeek: https://twitter.com/Shaos1973


19 Nov 2020 11:04
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 12 posts ] 

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.