Перейти к содержанию
    

оличное решение проблемы. я восхищен, не побоюсь этого слова.

Такое решение называется Look up table, где n - адрес, а магическое число - биты по этому адресу. Используется в ПЛИСах уже не знаю сколько.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

adnega, неужели в наше время, микропроцессорные ресурсы такие ценные, что пришлось так извращаться?

Конечно, нет. Просто я привык к таблицам истинности и для меня на порядок проще набросать ее, нежели городить пятиэтажные логические формулы.

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

И самая ирония в том, что затем рисую в схемном редакторе схему, соответствующую этой логической формуле на стандартных элементах,

а компилятор "упихивает" ее в LUT внутри ПЛИС ))

 

Вдогонку добавлю, что LUT замечен даже в gcc.

Делал машину состояний для энкодера на Си в лоб.

Переделал в LUT. Посмотрел листинги и (прошу прощения) офигел - gcc сотворил одинаковый LUT в обоих случаях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из значений переменных собираем индекс:

n = (param1 << 4) + (param2 << 3) + (input1 << 2) + (input 2 << 1) + (input3 << 0);

Затем получаем результат:

((0xFEF0EE00) >> n) & 1

Т.е. для вычисления (param1 && input1) || (param2 && (input2 || input3)) нам достаточно знать одно волшебное 32-битное число 0xFEF0EE00.

А теперь немножко расширим подход. Запланируем "таблицу" в 256 значений, соответственно, "волшебное число" будет состоять не из 4-битных полей, а из 8-битных, т.е из байт. "Bолшебное число" не будем ограничивать размерами, а запишем в байтовый массив произвольной длины. А в самой таблице будем держать адреса функций, которые будут выполняться, когда в массиве встретится соответствующий байт. В результате мы получим заготовку для простейшей Форт-машины, а байтовый массив будет содержать то, что называется "программой из байт-кодов".

 

Для того, чтобы окончательно оформить Форт-машину, сначала зададимся вопросом; а как функции, вызываемые по своим байт-кодам, будут обмениваться информацией друг с другом? И придем к выводу, что проще всего использовать стек, откуда функции будут брать исходные данные для вычислений, и куда они будут класть результаты. Затем задумаемся, а хорошо ли, что наши программы выполняются линейно, в порядке расположения байт-кодов в массиве? Нехорошо, надо бы предусмотреть возможность изменения порядка выполнения байт-кодов при помощи самих байт-кодов. Заведем байт-коды для условной и безусловной передачи управления в произвольное место программы, а также вызовы подпрограмм, состоящих из байт-кодов, и возврата из подпрограмм. Для хранения адресов возврата заведем еще один стек, назовем его "стек возвратов".

 

Вот теперь мы получили вполне функциональную Форт-машину. Для того, чтобы она была полной по Тьюрингу, достаточно задать всего пару десятков байт-кодов. То есть, на такой машине можно выполнить любые вычисления, хоть искусственный интеллект создать.

 

Окончательно эта Форт-машина превратится в настоящий Форт после того, как (при помощи программ, написанных в байт-кодах) будет добавлен ввод-вывод, написан транслятор из исходного текста (или клавиатурного ввода) в байт-код, добавлены средства для организации и вызова программ в виде словарей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Окончательно эта Форт-машина превратится в настоящий Форт после того, как (при помощи программ, написанных в байт-кодах) будет добавлен ввод-вывод, написан транслятор из исходного текста (или клавиатурного ввода) в байт-код, добавлены средства для организации и вызова программ в виде словарей.

"Скелет" этого варианта? :)

Кросс Форт на C: FVM factory

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кросс Форт на C: FVM factory

 

Ну да. Жаль, автор давно забросил этот проект. :rolleyes: Был бы он в нормальной форме, то задача создания встроенного интерпретатора решалась бы за 5 минут. А так его полдня чистить и править надо, прежде чем заработает, скажем, под CodeBlocks.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да. Жаль, автор давно забросил этот проект. :rolleyes: Был бы он в нормальной форме, то задача создания встроенного интерпретатора решалась бы за 5 минут. А так его полдня чистить и править надо, прежде чем заработает, скажем, под CodeBlocks.

Всегда есть надежда и вероятность вернуться к "допиливанию" заброшенных (или отложенных для продвижения будущих целей) авторских идей. (на том же sourceforge)

В тематике Форт их достаточно много, даже при "отсутствии" Форт программистов, как одной из движущих сил IT сообщества. :)

 

P.S. На sourceforge мне был интересен из Форт с С в связке F-- проект.

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

был бы весьма интересен проект под шарп

и причем, если это будет таки интерпретатор, то с выполнением бинарника от i86, чтобы не замарачиваться с кросс-компиляцией

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Одно не пойму - если автор не знает, чего он хочет, чем не устраивает интерпретатор бэйсика?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Одно не пойму - если автор не знает, чего он хочет, чем не устраивает интерпретатор бэйсика?

А что такое Бэйсик или Форт против языков PLC или даже просто голой LUT? "Это как плотник супротив столяра" (с). Не надо его ни в чем убеждать, он и сам "таких советов может каждый день выдавать пачками". :laughing: Вот Изаграф ему бы наверное подошел, но только бесплатный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот Изаграф ему бы наверное подошел, но только бесплатный.

Изаграф = Codesys = TwinCAT = Beremiz = среда разработки/интерпретатор/парсер/отладчик/исполнитель языков МЭК 61131-3 на различных платформах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Некоторая инфа в тему: Advanced Forth System (Конструктор с прошитым контроллером Форт-системы)

https://dt-store.shop/-p224148770

 

P.S.Введение в Advanced Forth и Форт-машины.

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 hours ago, Kopa said:

Некоторая инфа в тему: Advanced Forth System (Конструктор с прошитым контроллером Форт-системы)

https://dt-store.shop/-p224148770

 

P.S.Введение в Advanced Forth и Форт-машины.

 

хочу готовое решение. из коробки :))

пока сделал свой парсер выражений. вполне себе работает. на довольно ёмких скриптах пробег 2-4 мс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/15/2020 at 11:16 PM, Kopa said:

Как предложено на сайте, попросил ссылку на вход в магазин. Ссылку на емэйл получил, а примерно через день на этот адрес пришел еще и спам вида "Your account was approved" на якобы $10.443,83, чего ранее не было. Как выяснилось, ссылку просил зря, поскольку в страну Оз доставки нет. Можно было бы об этом и прямым текстом на сайте написать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 hours ago, =AK= said:

Как предложено на сайте, попросил ссылку на вход в магазин. Ссылку на емэйл получил, а примерно через день на этот адрес пришел еще и спам вида "Your account was approved" на якобы $10.443,83, чего ранее не было. Как выяснилось, ссылку просил зря, поскольку в страну Оз доставки нет. Можно было бы об этом и прямым текстом на сайте написать.

Вроде особой проблемы нет использовать и сторонние Форт разработки как типа коммерческих http://soton.mpeforth.com/downloads/VfxCommunity/ VFX Forth Community (пробовал применить самостоятельно и к STM32L100 что и получилось), SwiftForth https://www.forth.com/swiftforth/ так и народные, например, на основе Mecrisp-Stelaris и проект на его основе https://github.com/spyren/Mecrisp-Cube

 

P.S.  Можно и своё забодяжить как например https://github.com/oco2000/m3forth

Перевод jonesforth  Jhttps://web.archive.org/web/20191009044313/http://rigidus.ru/

 

На Github Форт  есть в разных развиваемых вариантах, в том числе и например на Rust :)

 

https://github.com/search?q=forth&type=

 

Forthlogic -  ПЛК контроллеры программируемые на некотором своём диалекте Форт-83 (для поддержки параллельных задач)

https://es.ua/komponenty-telemexaniki/kontrollery/

 

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/29/2016 at 6:27 AM, =AK= said:

 

Ну да. Жаль, автор давно забросил этот проект. :rolleyes: Был бы он в нормальной форме, то задача создания встроенного интерпретатора решалась бы за 5 минут. А так его полдня чистить и править надо, прежде чем заработает, скажем, под CodeBlocks.

 

А, имеет ли смысл реанимировать этот подход?

У меня, например, до сих пор лежит в загашниках не развиваемый FF303 (Бреда Эккерта)   перенесённый для процессора PDP-11.

 

P.S. А, есть ещё, например генератор  g4.fs для генерации шитого кода из Форт исходников для amForth (у меня почти получилось его применить для генерации amForth версии 5.5 для Atmega 162)

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

 

On 11/16/2020 at 6:02 PM, jenya7 said:

хочу готовое решение. из коробки :))

пока сделал свой парсер выражений. вполне себе работает. на довольно ёмких скриптах пробег 2-4 мс.

А, возможно ли универсальное решение?

Как пример автор запрограммировал решение для домашней HLDI на своём Форт для ПК и на Си для STM32 (автор этого решения мне рассказал как его пересобрать для ПК в рамках его Форт системы)

https://radiokot.ru/forum/viewtopic.php?f=8&t=119089

 

Один болгарин хотит что бы я ему дал авторские Форт исходники для развития их (хотя они есть в топике темы), но мне непонятно что он с ними сможет сделать. :)

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...