nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 13 Dec 2018 10:11



Reply to topic  [ 18 posts ]  Go to page 1, 2  Next
ASM TRIT 
Author Message
Fanat
User avatar

Joined: 04 Jan 2016 10:15
Posts: 52
Location: Russia, S.- Peterburg
Reply with quote
Для развития использование троичной логики в проекта предлагаю пройти пройденные тропинки.

Начать с ASM TRIT.

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

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

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

Исходные коды ассемблера можно забрать здесь: https://github.com/askfind/computer_language_O/blob/master/OASM/ASMTABLE.PAS


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


Предлагаю предложить мнемокод будущего ассемблера ASM TRIT

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

      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:
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

_________________
"Где просто, там ангелов со сто, а где мудрено, там ни одного" (С)


27 Apr 2018 13:27
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
askfind wrote:
Исходные коды ассемблера можно забрать здесь:
https://github.com/askfind/computer_language_O/blob/master/OASM/ASMTABLE.PAS

Прямая ссылка, а не скачивается... :-?
Непонятные нелады у меня с https://github.com/... :osad:

_________________
iLavr


27 Apr 2018 13:49
Profile
Fanat
User avatar

Joined: 04 Jan 2016 10:15
Posts: 52
Location: Russia, S.- Peterburg
Reply with quote
Lavr wrote:
askfind wrote:
Исходные коды ассемблера можно забрать здесь:
https://github.com/askfind/computer_language_O/blob/master/OASM/ASMTABLE.PAS

Прямая ссылка, а не скачивается... :-?
Непонятные нелады у меня с https://github.com/... :osad:


Attachments:
File comment: Проект "Компилятор "О" и OASM.
computer_language_O.zip [233.46 KiB]
Downloaded 38 times

_________________
"Где просто, там ангелов со сто, а где мудрено, там ни одного" (С)
27 Apr 2018 13:55
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Благодарю! :kruto:
Увлекаюсь ассемблерами просто... :wink:

_________________
iLavr


27 Apr 2018 14:04
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17214
Location: Colorado
Reply with quote
Да начинали мы уже с ассемблера - в частности я в своём ассеблере RASM поддержал троичный виртуальный компьютер Tunguska :)

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


27 Apr 2018 19:07
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Да начинали мы уже с ассемблера...

Начинали, начинали, да что-то никак не закончили... :wink:

Помнится мне, под TRIADOR кто-то обещал простенький ассемблер написать...
Нет, это не ты. Но ассемблера я что-то так и не увидел даже в зачатках. :-?

_________________
iLavr


28 Apr 2018 04:06
Profile
Fanat
User avatar

Joined: 04 Jan 2016 10:15
Posts: 52
Location: Russia, S.- Peterburg
Reply with quote
Shaos wrote:
Да начинали мы уже с ассемблера - в частности я в своём ассеблере RASM поддержал троичный виртуальный компьютер Tunguska :)


Скачал и посмотрел TUNGUSKA.TAB . А где описание подробное синтаксиса ассемблера скачать?

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

Code:
// TUNGUSKA.TAB - Tunguska assembler table for RASM v2.4
*ASM TABLE Tunguska
CLV    #D8 #FF
BRK    #D9 #FF
RTI    #DA #FF
 

_________________
"Где просто, там ангелов со сто, а где мудрено, там ни одного" (С)


28 Apr 2018 04:31
Profile WWW
Fanat
User avatar

Joined: 04 Jan 2016 10:15
Posts: 52
Location: Russia, S.- Peterburg
Reply with quote
Lavr wrote:
Нет, это не ты. Но ассемблера я что-то так и не увидел даже в зачатках. :-?


У меня есть опыт создания специализированного ассемблера для виртуальной машины. Виртуальная машина работает в ARM и управляет устройствами сети CAN в автомобилях.

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

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

Кстати, RASM - вполне даже решение. Написать документацию. Подготовить примеры с пояснениями. Взлетит!

_________________
"Где просто, там ангелов со сто, а где мудрено, там ни одного" (С)


28 Apr 2018 04:37
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
askfind wrote:
Ищите толкового добровольца-программиста. Могу стать наставником и консультантом по реализации ассемблера.

Да мы и сами умеем, без наставников... Но на всё надо время - это же хобби тут у нас.

Когда люди взялись толкнуть вместе интересный проект, просто распределяют роли или
обязанности - я об этом намекнул... :wink:
Вот "доброволец-программист" пока и "просел"... :lol:

_________________
iLavr


28 Apr 2018 04:55
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17214
Location: Colorado
Reply with quote
Ну у Тунгуски есть и свой родной ассемблер, и даже свой родной си - все в исходниках доступно ;)

А ассемблер Триадора надо написать, но только онлайн...

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


28 Apr 2018 08:20
Profile WWW
Fanat
User avatar

Joined: 04 Jan 2016 10:15
Posts: 52
Location: Russia, S.- Peterburg
Reply with quote
Shaos wrote:
Ну у Тунгуски есть и свой родной ассемблер, и даже свой родной си - все в исходниках доступно ;).


Проект "Тунгуски" просмотрел. Автор Си дал ссылку на исходные файлы. Скачал и взглянул. Не было практической задачи. Возможно к "Сетунь" реализация может понадобиться. Я не понял главное. Для чего? Наверное хобби и страсть к новому.

_________________
"Где просто, там ангелов со сто, а где мудрено, там ни одного" (С)


30 Apr 2018 13:46
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17214
Location: Colorado
Reply with quote
Для чего? Чтобы был ещё один троичный процессор (хоть и виртуальный) ;)

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


01 May 2018 06:04
Profile WWW
Fanat
User avatar

Joined: 04 Jan 2016 10:15
Posts: 52
Location: Russia, S.- Peterburg
Reply with quote
Shaos wrote:
Для чего? Чтобы был ещё один троичный процессор (хоть и виртуальный) ;)


Идея-план, очень захотелось, воссоздать в "железе" "Сетунь-1958".

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

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

_________________
"Где просто, там ангелов со сто, а где мудрено, там ни одного" (С)


02 May 2018 13:19
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
askfind wrote:
Попытаться оценить возможность использовать троичный процессор из "Сетуни" для логических вычислений по Аристотелю (силогистика Брусенцова).

Так есть же эмулятор "Сетуни" и есть даже вариант онлайн... :roll:

Не слишком ли долгий путь - строить аппаратный эмулятор "Сетуни" для этой "оценки возможностей"?

_________________
iLavr


02 May 2018 14:00
Profile
Fanat
User avatar

Joined: 04 Jan 2016 10:15
Posts: 52
Location: Russia, S.- Peterburg
Reply with quote
Lavr wrote:
Не слишком ли долгий путь - строить аппаратный эмулятор "Сетуни" для этой "оценки возможностей"?


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

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

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

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

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

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

Конечный "железный" вариант "Сетунь-1958" конечно же будет на современных нескольких микроконтроллерах.


Attachments:
InterfaceTrit.png
InterfaceTrit.png [ 23.91 KiB | Viewed 1777 times ]
tte.png
tte.png [ 39.78 KiB | Viewed 1777 times ]
image042.jpg
image042.jpg [ 1.75 KiB | Viewed 1777 times ]

_________________
"Где просто, там ангелов со сто, а где мудрено, там ни одного" (С)
02 May 2018 15:06
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 18 posts ]  Go to page 1, 2  Next

Who is online

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