nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 25 Apr 2024 17:12



Reply to topic  [ 28 posts ]  Go to page 1, 2  Next
Эмулятор троичной ЭВМ 
Author Message
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Снова возвращаюсь к теме эмулятора (имитатора) троичной ЭВМ для отработки алгоритмов и сравнения эффективности кодирования и сжатия данных по сравнению с двоичными машинами и методами :-D Собираюсь сделать следующим образом:

- разделить пространства команд, данных и стека
- использовать девять 18-разрядных регистров общего назначения
- три регистра управления (счетчик команд, указатель стека и регистр флагов)
- минимум команд
- текстовый терминал
- ввод данных из потоков

Среда реализации - Delphi.


13 Sep 2005 21:00
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22584
Location: Silicon Valley
Reply with quote
А я от железа иду - в моем тримуляторе будут все те блоки, которые можно повторить в железе


14 Sep 2005 19:03
Profile WWW
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Shaos wrote:
А я от железа иду - в моем тримуляторе будут все те блоки, которые можно повторить в железе

Постараюсь к моменту создания железа разработать основные принципы кодирования, сжатия и программирования в уравновешенном троичном коде.


17 Sep 2005 23:29
Profile
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Система команд троичного RISC-процессора планируется а-ля RTL :lol: или "содержательных обозначений" (что почти одно и тоже) и ориентировочно будет выглядеть так:

запись слова: m[address] = Rn
чтение слова: Rn = m[address]
пересылка слова: Rn = Rn
пересылка одного произвольного разряда: Rn.n = Rn.n

сложение: Rn = Rn + Rn
вычитание (сравнение): Rn = Rn - Rn
умножение: Rn = Rn * Rn
деление (целочисленное): Rn = Rn : Rn
деление (остаток): Rn = Rn % Rn

сдвиг: << и >>
маскирование: Rn mask Rn

увеличение: Rn max
усреднение: Rn mid
уменьшение: Rn min

условный переход: if (x) goto address, где x = eq, ne, gt, ge, lt, le
возврат: ret


26 Sep 2005 10:57
Profile
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Пояснение к команде условного перехода: в (x) может быть несколько условий разделяемых запятой :-)

Забыл написать ещё две очень важные команды:

останов: stop
пропуск: none (исключительно для выравнивания команд по началу слова)


26 Sep 2005 23:36
Profile
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Вот небольшой пример того, как может выглядеть программа на ассемблере троичной ЭВМ:

Code:
                r0 = 0
                r1 = m[seconds]
                r1 = r1 + 1
                r1 ? 60
                if (ne) goto seconds_1
seconds_1       r1 = r0
                v[seconds] = r1
                m[seconds] = r1

                r1 = m[minutes]
                r1 = r1 + 1
                r1 ? 60
                if (ne) goto minutes_1
                r1 = r0
minutes_1       v[minutes] = r1
                m[minutes] = r1

                r1 = m[hours]
                r1 = r1 + 1
                r1 ? 24
                if (ne) goto hours_1
                r1 = r0
hours_1         v[hours] = r1
                m[hours] = r1
                ret

seconds         db    0
minutes         db    0
hours           db    0


Здесь v[hours], v[minutes] и v[seconds] - некие виртуальные троичные порты, каждый разряд этих портов напрямую присоединен к двухцветному светодиоду.


06 Oct 2005 05:12
Profile
Maniac
User avatar

Joined: 29 Mar 2005 06:06
Posts: 304
Location: Krasnodar
Reply with quote
а че у тебя условный переход такой нетроичный - достаточно ведь одного(!) условия сравнения с переходом на три адреса.


06 Oct 2005 22:11
Profile ICQ
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Безусловного не вижу, а вот в примечании к инструкции перехода написано, что условия можно разделять запятой ;)


08 Oct 2005 00:33
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22584
Location: Silicon Valley
Reply with quote
Mac Buster wrote:
Безусловного не вижу, а вот в примечании к инструкции перехода написано, что условия можно разделять запятой ;)


А действительно - как записать условный переход по трем адресам?


09 Oct 2005 20:52
Profile WWW
Maniac
User avatar

Joined: 29 Mar 2005 06:06
Posts: 304
Location: Krasnodar
Reply with quote
ну обычное троичное условие - проще и понятней. можно конечно и твои условия (кому удобней) сделать - просто через макрос к троичному_условному.


10 Oct 2005 06:32
Profile ICQ
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Shaos wrote:
А действительно - как записать условный переход по трем адресам?


По-моему условный переход по трем адресам это уже безусловный переход, т.к. есть всего три условия: меньше, равно и больше. Вероятно мне в самом деле стоит убрать лишние условия, оставив только lt,eq и gt. Т.е. команда условного перехода может иметь такой вид:

if (lt,eq) goto address ; переход если меньше или равно

if (eq, lt) goto address ; переход если больше или равно

if (lt,gt) goto address ; переход если не равно

Или вы считаете, что потребность в трех адресах может возникнуть ?


10 Oct 2005 09:23
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22584
Location: Silicon Valley
Reply with quote
Mac Buster wrote:
По-моему условный переход по трем адресам это уже безусловный переход, т.к. есть всего три условия: меньше, равно и больше.


Это как раз условный - только сразу на три адреса. А просыте условия записываются через тройной условный (n,o,p):
if(a<b) goto label -> (label,next,next)
if(a>b) goto label -> (next,next,label)
if(a==b) goto label -> (next,label,next)
if(a!=b) goto label -> (label,next,label)
if(a<=b) goto label -> (label,label,next)
if(a>=b) goto label -> (next,label,label)
более сложный вариант:
if(a==b) goto label; else label' -> (label',label,label')


10 Oct 2005 16:02
Profile WWW
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Shaos wrote:
Это как раз условный - только сразу на три адреса. А просыте условия записываются через тройной условный (n,o,p):

Хорошо, принимаю это предложение. Правда с одним ограничением: в связи с тем, что у нас RISC-процессор, внутри скобок условного перехода может перечисляться только состояние флагов, само сравнение должно производится отдельной командой предшествующей команде перехода.


11 Oct 2005 00:39
Profile
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Переходим к логическим командам. Собственно, она всего одна, рабочее название мнемоники - tlog (от trinary или ternary logic). Макросами определяются узкоспециализированные варианты команды: max, mid, min, mask, shift up, shift down И т.п.

Возражения есть ?


11 Oct 2005 01:00
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22584
Location: Silicon Valley
Reply with quote
Mac Buster wrote:
Shaos wrote:
Это как раз условный - только сразу на три адреса. А просыте условия записываются через тройной условный (n,o,p):

Хорошо, принимаю это предложение. Правда с одним ограничением: в связи с тем, что у нас RISC-процессор, внутри скобок условного перехода может перечисляться только состояние флагов, само сравнение должно производится отдельной командой предшествующей команде перехода.


Можно делать так - имея во флаге сравнения значение N, O или P - мы вызываем специальную команду локального перехода, за которой следуют три команды безусловного перехода - переходы на адреса An, Ao, Ap соответственно. Т.е. перехода по тройному условию будет занимать 4 команды (по уже готовому условию перехода во флаге сравнения).


11 Oct 2005 16:19
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 28 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 43 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.