nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 16:27



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

Joined: 08 Jan 2003 23:22
Posts: 22412
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

_________________
:dj: https://mastodon.social/@Shaos


29 May 2020 19:33
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
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-битных компиляторах)

_________________
:dj: https://mastodon.social/@Shaos


29 May 2020 19:37
Profile WWW
Admin
User avatar

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

_________________
:dj: https://mastodon.social/@Shaos


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

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

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

_________________
iLavr


01 Jun 2020 14:59
Profile
Maniac

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

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


01 Jun 2020 15:13
Profile
Admin
User avatar

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

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

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

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

_________________
:dj: https://mastodon.social/@Shaos


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

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

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

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

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

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

_________________
iLavr


01 Jun 2020 20:09
Profile
Admin
User avatar

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

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

_________________
:dj: https://mastodon.social/@Shaos


05 Jul 2020 20:44
Profile WWW
Junior
User avatar

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

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

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


16 Nov 2020 10:22
Profile
Admin
User avatar

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

_________________
:dj: https://mastodon.social/@Shaos


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

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

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

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

_________________
iLavr


19 Nov 2020 04:44
Profile
Admin
User avatar

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

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

_________________
:dj: https://mastodon.social/@Shaos


19 Nov 2020 10: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 18 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:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.