ASM TRIT

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

Moderator: haqreu

User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

ASM TRIT

Post by askfind »

Для развития использование троичной логики в проекта предлагаю пройти пройденные тропинки.

Начать с ASM TRIT.

Есть прекрасная книга для программистов "Языки программирования и методы трансляции" [1].

В этой книге автор опубликовал исходные тексты ассемблера, который можно быстро переписать для троичных типов данных.

Я написал автору книги Сергею Залмановичу и получил разрешение использовать исходный код копилятора "О" и ассемблера в проектах.

Исходные коды ассемблера можно забрать здесь: https://github.com/askfind/computer_lan ... MTABLE.PAS

Модульная структура ассемблера будет во многом повторять
конструкцию компилятора «О». Предусматриваются драйвер
исходного текста ( AsmText ), модуль для работы с таблицей имен
( AsmTable ), лексический анализатор ( AsmScan ). Это вспомога-
тельные модули. За собственно ассемблирование будет отвечать
AsmUnit , объединяющий функции распознавателя и генератора
кода. Модуль виртуальной машины используется, разумеется,
без всяких изменений. Отвечающий за реакцию на ошибки, мо-
дуль OError также применен неизменным.
Предлагаю предложить мнемокод будущего ассемблера ASM TRIT

Пример исходного кода ассемблера:

Code: Select all


      IN	; X		
      IN	; X, Y

Loop: OVER	; X, Y, X
      OVER	; X, Y, X, Y
      Quit
      IFEQ	; X, Y		
      OVER	; X, Y, X
      OVER	; X, Y, X, Y
      NoSwap
      IFLT	; X, Y		
      SWAP	; Y, X		
NoSwap:
      OVER	; Min(X, Y), Max(X, Y), Min(X, Y)
      SUB		; 
      Loop
      GOTO	; X, Y	

Quit: DROP	; X
      0		; X, 0
      OUT
      OUTLN
STOP
В файле список кодов ассемблера, которые распознаёт ассемблер OASM:

Code: Select all

procedure InitScan;
begin
	cmd := 0;
	EnterCode(cmStop, 'STOP' );
	EnterCode(cmOut, 'OUT' );
	EnterCode(cmOutLn, 'OUTLN' );
	EnterCode(cmIn, 'IN' );
	EnterCode(cmAdd, 'ADD' );
	EnterCode(cmSub, 'SUB' );
	EnterCode(cmMult, 'MULT' );
	EnterCode(cmDIV, 'DIV' );
	EnterCode(cmMOD, 'MOD' );
	EnterCode(cmNeg, 'NEG' );
	EnterCode(cmDup, 'DUP' );
	EnterCode(cmDrop, 'DROP' );
	EnterCode(cmSwap, 'SWAP' );
	EnterCode(cmOver, 'OVER' );
	EnterCode(cmLoad, 'LOAD' );
	EnterCode(cmSave, 'SAVE' );
	EnterCode(cmGoto, 'GOTO' );
	EnterCode(cmIfEQ, 'IFEQ' );
	EnterCode(cmIfNE, 'IFNE' );
	EnterCode(cmIfLE, 'IFLE' );
	EnterCode(cmIfLT, 'IFLT' );
	EnterCode(cmIfGE, 'IFGE' );
	EnterCode(cmIfGT, 'IFGT' );

{
	EnterCode(cmEnter, 'ENTER' );
	EnterCode(cmCall, 'CALL' );
	EnterCode(cmRet, 'RET' );
	EnterCode(cmSetBP, 'SETBP' );
	EnterCode(cmGetBP, 'GETBP' );
	EnterCode(cmLLoad, 'LLOAD' );
	EnterCode(cmLStore, 'LSTORE' );
	EnterCode(cmSP, 'SP' );
}
end;
1. Свердлов С.З, Языки программирования и методы трансляции. Учебное пособие. // [Текст] .- С.-Петербург .- изд. Питер .- 2007 г. - стр. 571
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Assembler OASM

Post by Lavr »

askfind wrote:Исходные коды ассемблера можно забрать здесь:
https://github.com/askfind/computer_lan ... MTABLE.PAS
Прямая ссылка, а не скачивается... :-?
Непонятные нелады у меня с https://github.com/... :osad:
iLavr
User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: Assembler OASM

Post by askfind »

Lavr wrote:
askfind wrote:Исходные коды ассемблера можно забрать здесь:
https://github.com/askfind/computer_lan ... MTABLE.PAS
Прямая ссылка, а не скачивается... :-?
Непонятные нелады у меня с https://github.com/... :osad:
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Программирование с помощью троичной логики

Post by Lavr »

Благодарю! :kruto:
Увлекаюсь ассемблерами просто... :wink:
iLavr
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: ASM TRIT

Post by Shaos »

Да начинали мы уже с ассемблера - в частности я в своём ассеблере RASM поддержал троичный виртуальный компьютер Tunguska :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: ASM TRIT

Post by Lavr »

Shaos wrote:Да начинали мы уже с ассемблера...
Начинали, начинали, да что-то никак не закончили... :wink:

Помнится мне, под TRIADOR кто-то обещал простенький ассемблер написать...
Нет, это не ты. Но ассемблера я что-то так и не увидел даже в зачатках. :-?
iLavr
User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: ASM TRIT

Post by askfind »

Shaos wrote:Да начинали мы уже с ассемблера - в частности я в своём ассеблере RASM поддержал троичный виртуальный компьютер Tunguska :)
Скачал и посмотрел TUNGUSKA.TAB . А где описание подробное синтаксиса ассемблера скачать?

Где взглянуть обсуждение идей и принципов построения ассемблера для троичных процессоров?

Code: Select all

// TUNGUSKA.TAB - Tunguska assembler table for RASM v2.4
*ASM TABLE Tunguska
CLV    #D8 #FF
BRK    #D9 #FF
RTI    #DA #FF
 
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: ASM TRIT

Post by askfind »

Lavr wrote:Нет, это не ты. Но ассемблера я что-то так и не увидел даже в зачатках. :-?
У меня есть опыт создания специализированного ассемблера для виртуальной машины. Виртуальная машина работает в ARM и управляет устройствами сети CAN в автомобилях.

Занять воссозданием "Сетунь".

Ищите толкового добровольца-программиста. Могу стать наставником и консультантом по реализации ассемблера.

Кстати, RASM - вполне даже решение. Написать документацию. Подготовить примеры с пояснениями. Взлетит!
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: ASM TRIT

Post by Lavr »

askfind wrote:Ищите толкового добровольца-программиста. Могу стать наставником и консультантом по реализации ассемблера.
Да мы и сами умеем, без наставников... Но на всё надо время - это же хобби тут у нас.

Когда люди взялись толкнуть вместе интересный проект, просто распределяют роли или
обязанности - я об этом намекнул... :wink:
Вот "доброволец-программист" пока и "просел"... :lol:
iLavr
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: ASM TRIT

Post by Shaos »

Ну у Тунгуски есть и свой родной ассемблер, и даже свой родной си - все в исходниках доступно ;)

А ассемблер Триадора надо написать, но только онлайн...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: ASM TRIT

Post by askfind »

Shaos wrote:Ну у Тунгуски есть и свой родной ассемблер, и даже свой родной си - все в исходниках доступно ;).
Проект "Тунгуски" просмотрел. Автор Си дал ссылку на исходные файлы. Скачал и взглянул. Не было практической задачи. Возможно к "Сетунь" реализация может понадобиться. Я не понял главное. Для чего? Наверное хобби и страсть к новому.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: ASM TRIT

Post by Shaos »

Для чего? Чтобы был ещё один троичный процессор (хоть и виртуальный) ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: ASM TRIT

Post by askfind »

Shaos wrote:Для чего? Чтобы был ещё один троичный процессор (хоть и виртуальный) ;)
Идея-план, очень захотелось, воссоздать в "железе" "Сетунь-1958".

Для него сделать ассемблер. Оценить можно ли использовать "как есть". Архитектура очень простая и местами неожиданная. Например, адресация к памяти. Будет необходимо расширить и добавить страницы памяти. Попытаться оценить возможность использовать троичный процессор из "Сетуни" для логических вычислений по Аристотелю (силогистика Брусенцова).

Т.е. создать нормальный набор инструментов по написанию "на человеческом" языке прикладных программ.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: ASM TRIT

Post by Lavr »

askfind wrote:Попытаться оценить возможность использовать троичный процессор из "Сетуни" для логических вычислений по Аристотелю (силогистика Брусенцова).
Так есть же эмулятор "Сетуни" и есть даже вариант онлайн... :roll:

Не слишком ли долгий путь - строить аппаратный эмулятор "Сетуни" для этой "оценки возможностей"?
iLavr
User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: ASM TRIT

Post by askfind »

Lavr wrote: Не слишком ли долгий путь - строить аппаратный эмулятор "Сетуни" для этой "оценки возможностей"?
Эмулятор "Сетунь" на javascript и lisp я скачал и посмотрел. Запускал web-версию, причём поведение и реакция машины была странной. Что-то делала. Повторное обновление страницы вывела результат. Управляющие клавиши то срабатывают, то нет.

Мне хочется полноценной симуляции на языке Си. На прошлой неделе начал писать модели типов ферритовых цифровых элементов как битовых, так и тритовых. Тестирую и оптимизирую программный код модели. Очень помогла. На основании модели получился синтез схемы на цифровых микросхемах, которых не наблюдал здесь. :esmile: Ферритовый битовый цифровой элемент можно заменить 3-мя D-триггерами и парой обычной логики. Остальные троичные платки на ферритах также очевидно можно заменить 4-мя D-триггерами и логикой.

Кстати, "про долгий путь". Процессор и память в "Сетуни" очень простые! Повторяются на "раз, два, три" из готовых программных кубиков моделей троичных блочков "Сетуни".

Запутанность в моей голове была в том, что на ферритовые цифровые элементы необходимо подавать импульсы тока. А я привык к цифровой логике, где на вход подают уровни напряжения.

Сейчас все хитрые секреты ферритовых цифровых элементов удалось раскрыть, благодаря статьям и книге.

Купил и ожидаю доставку ферритомых колец с прямоугольной петлей гистерезиса. Надеюсь повторить некоторые ферритовые цифровые элементы "Сетунь". Проведу лабораторную работу.

Конечный "железный" вариант "Сетунь-1958" конечно же будет на современных нескольких микроконтроллерах.
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)