Forth http://www.fforum.winglion.ru/ |
|
ef \ esoteric forth \ http://www.fforum.winglion.ru/viewtopic.php?f=40&t=3244 |
Страница 1 из 15 |
Автор: | Total Vacuum [ Вт июл 16, 2019 23:22 ] |
Заголовок сообщения: | ef \ esoteric forth \ |
Код: Министерство Фортостроения Российской Федерации
Язык программирования ef \ esoteric forth \ command ef FORTH ---------- ------------------- -------------------------- comment \ \ ( ... ) include % S" filename" INCLUDED number 0-9 0-9 user a-z a-z define : ; : ... ; math + - * / < = > & | ^ + - * / < = > AND OR XOR stack # $ ? _ #UP $WAP ?ICK DR_P load/store @ ! , . @ ! C@ C! string " " S" string" char ' ' CHAR c asm ` ` CODE ... END-CODE if { ~ } IF ... ELSE ... THEN while ( ) IF BEGIN ... 0= UNTIL THEN loop [ ] DO ... -1 +LOOP |
Автор: | Total Vacuum [ Вт июл 16, 2019 23:30 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Начало... План такой: 0.16-битная версия (x86); 1.32-битная версия (x86); 2.портируем на ARM, Blackfin, Thumb, ...; 3.захватываем мир и начинаем им управлять, стараясь не привлекать внимание санитаров... |
Автор: | Hishnik [ Ср июл 17, 2019 01:15 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Пункты 1 и 2 вполне. Пункт 0 - а зачем он сегодня? Впору уже выбирать между 32 и 64 битами. |
Автор: | Total Vacuum [ Ср июл 17, 2019 11:02 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Эм... Вообще-то я планировал начать с 8-битной версии, т.к. минималистичный язык должен быть минималистичен во всем. Но потом от этой идеи отказался, т.к. 256 байт для хранения данных могло и не хватить. Возможно, вернусь к этой затее позже... Кстати, есть ли в природе 8-битные версии Форта? И как в них обходится ограничение "8-бит на адрес"? Ведь процессоры тоже были когда-то 8-битными (да и сейчас есть), но при этом позволяли работать с 64K памяти благодаря какому-нибудь 16-битному регистру или паре 8-битных регистров. Тут есть несколько возможных вариантов: - только 8-битные адреса, только хардкор! - при заталкивании в стек адреса переменной, а также при вызове команд @ и ! можно оперировать 2-байтными адресами, но тогда не будет работать пара команд SWAP ! - при заталкивании в стек адреса переменной в стек писать только младшую часть адреса (смещение), а старшую часть адреса (сегмент) писать в какой-нибудь регистр, но тогда возникают проблемы при попытке добавить к одной переменной значение другой: X DUP @ Y @ + SWAP ! в общем случае работать не будет Интересно все-таки, как это сделано или могло бы быть сделано в 8-битной версии Форт? Ну а после выполнения п.3 все процессоры будут объявлены 16-разрядными независимо от фактической разрядности... |
Автор: | KPG [ Ср июл 17, 2019 11:33 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Total Vacuum писал(а): :D Эм... Вообще-то я планировал начать с 8-битной версии, т.к. минималистичный язык должен быть минималистичен во всем. Но потом от этой идеи отказался, т.к. 256 байт для хранения данных могло и не хватить. Возможно, вернусь к этой затее позже... Классика 8-ми битных контроллеров - ядро 8051 (там как раз именно 256 байт, за некоторыми оговорками, внутри кристала) правда там есть индексный 16-ти битный регистр + пара регистров R0-R1 могут быть индексом, что интересно в этой нестареющей архитектуре нет флага нуля результата и результат на 0 проверяется в команде перехода по содержимому А (аккумулятора) или (регистра?) Например в контроллере CY7C68013A-56VC т.к. программа при старте загружается с внешней флэш микросхемы по I2C, то внутреннюю память программы объединили и для доступа как к ОЗУ (получив фон Неймана на 8051 ядре) эта возможность позволяет в данном контроле (в пределе) получить из 24Кб необходимое количество ОЗУ из общего с кодом пространства (т.к. во многих контроллерах количество ОЗУ и Флэш фиксируется и влияет на цену, а в таком варианте есть выбор) Пространство кода ограничено в данном контроллере 16Кб, что вполне комфортно и для вcтраиваемой Форт системы учитывая другие плюшки данного кристалла (48Мгц 4-е тактное ядро, USB2.0, FIFO, GPIF ..). Есть ещё и 128-ногий CY7C68013A и там уже есть интерфейс и к внешней памяти. P.S. Неплохо 8051 ядро описано в 1-ом томе (за авторством Предко Майкла 2001г) книге "Руководство по микроконтроллерам". CY7C68013A в статьях Чекунова Д. по применению USB журнала "Современная электроника" 2004-2006гг. Кто то давно публиковал на forth.org.ru (возможно ~chess) такой Форт для 8051 (запуск под SPF4) с программой для хлебопечкиProgramm Форт систем, конечно, для 8051 есть много разных. |
Автор: | Total Vacuum [ Вт июл 23, 2019 01:07 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
KPG писал(а): Классика 8-ми битных контроллеров - ядро 8051 Что-то 8-битное в железе в ближайшей перспективе вряд ли удастся пощупать, т.к. сейчас засилье разных 32-битных DSP, ARM и Cortex, руководство не оценит моей тяги к 8-битным старичкам... Остается только вариант с тестированием своих поделок в связке с эмулятором чего-нибудь доисторического (Z80 или 6502). |
Автор: | Total Vacuum [ Вт июл 23, 2019 01:14 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Итак, приступим... Основной принцип: упростить все, что можно упростить. Пойдем по пути наименьшего сопротивления: - это будет самый примитивный транслятор; - никаких оптимизаций; - asm вместо исполняемого файла, чтобы не вычислять адреса; - вместо вывода в файл сделаем вывод на экран, с экрана будем перенаправлять в файл; - 2/3/и т.д.-проходный транслятор вместо однопроходного, если так будет проще; - без словарей, если получится; - часть примитивов реализуем на asm, прыжковую часть и блочные конструкции - на ef; |
Автор: | KPG [ Вт июл 23, 2019 01:20 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Total Vacuum писал(а): KPG писал(а): Классика 8-ми битных контроллеров - ядро 8051 Что-то 8-битное в железе в ближайшей перспективе вряд ли удастся пощупать, т.к. сейчас засилье разных 32-битных DSP, ARM и Cortex, руководство не оценит моей тяги к 8-битным старичкам... Остается только вариант с тестированием своих поделок в связке с эмулятором чего-нибудь доисторического (Z80 или 6502). А, что мешает взять, например, для Cortex ARM - Mecrisp-Stellaris или VFX Forth, SwiftForth и местные разные разработки, например m3Forth (авторская тема есть на местном форуме) |
Автор: | Hishnik [ Вт июл 23, 2019 03:03 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Total Vacuum писал(а): Что-то 8-битное в железе в ближайшей перспективе вряд ли удастся пощупать Есть интересные STM8S. У них не сказать что так мало флеша, но у STM вообще довольно дешевые чипы при неплохой периферии. Total Vacuum писал(а): руководство не оценит моей тяги к 8-битным старичкам... Все ведь обсуждаемо, в том числе и с руководством. Зависит от организации, приоритетов и проектов. Грамотному руководству в целом все равно, сколько там байт в какой программе, главное, чтобы проект в целом двигался вперед и был при этом управляемым. |
Автор: | KPG [ Вт июл 23, 2019 14:06 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Hishnik писал(а): Total Vacuum писал(а): Что-то 8-битное в железе в ближайшей перспективе вряд ли удастся пощупать Есть интересные STM8S. У них не сказать что так мало флеша, но у STM вообще довольно дешевые чипы при неплохой периферии. STM8 and Forth on Github P.S. Кто то предполагает, что STM8S в изделиях с Ali заменяются на nuvoton N76E003at20 c 8051 однотактным ядром и 18Кб флеша + 1Kb SRAM тактовая 16МГц) но для данного кристала нужен программатор для программирования его по ISP. Кроме того контроллеры STC15 (8051 ядро) описаны в разной технической литературе на китайском языке (наверное преподаётся в китайских университетах) abebooks.com Amazon По STM8 гораздо меньше литературы. |
Автор: | Hishnik [ Вт июл 23, 2019 15:12 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
KPG писал(а): STM8 and Forth on Github Ну и зачем? Что, человек не в состоянии самостоятельно написать нужный инструмент для чипа, у которого память кончится быстрее, чем пройдет неделя кодирования по вечерам? KPG писал(а): P.S. Кто то предполагает, что STM8S в изделиях с Ali заменяются на nuvoton N76E003at20 c 8051 однотактным ядром и 18Кб флеша + 1Kb SRAM тактовая 16МГц) но для данного кристала нужен программатор для программирования его по ISP. А это зачем? Для создания образа "токсичного чипа"? Китайцы и подделывают (что однозначно плохо), и заменяют существующие МК на их функциональные аналоги (что обсуждаемо, но плохо, если при заказанном STM8 приезжает аналог). KPG писал(а): По STM8 гораздо меньше литературы. STM8 настолько прост в использовании, что можно пользоваться им на основе шаблонов IDE (настроить периферию правильно с точки зрения производителя) и собственных соображений. |
Автор: | Total Vacuum [ Вт июл 23, 2019 21:42 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Да, у ST Microelectronics очень большой выбор, есть решения практически на все случаи жизни. Использовавшиеся ранее DSP Blackfin BF533/BF592, а также ARMы LH79520 и многочисленные LPC постепенно отовсюду вытесняются старшими братьями STM8 из семейства STM32 (от STM32L011 до STM32F446). Ну а что-нибудь из STM8, возможно, удастся в какой-нибудь компактный прибор сосватать. Кстати, документация по всем STM на сайте https://www.st.com достаточно подробная, а вот поиск раньше более удобным был. |
Автор: | Hishnik [ Вт июл 23, 2019 22:47 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Total Vacuum писал(а): Использовавшиеся ранее DSP Blackfin BF533/BF592, а также ARMы LH79520 А что за организация/проект, если не секрет? Можно в ЛС или почту, если нет желания сюда выносить. |
Автор: | Total Vacuum [ Пн авг 05, 2019 23:38 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Наконец-то заработало... Вот исходник: Код: %c%o%f:yf@g#q.;:el#@q,1?t+.1+$!;:n0#l!t(t(y#'!'<&)q,'\'=#(y'\'-) )et,###'''=#{ye_}$'"'=|$'`'=|(#ye-)_l@t+.;:ai@p@2*r+!i#@1+$!p#@1 +$!;:up##@1-$!@2*r+@;:m5#+c;:k1?,=;:j"jmp l"s;:v'l'ci@h':'ca "cmp ax,0"sm;:z"jne t"si@hmji@hm't'ci@h':'ca;:w#'''k$,#':'<$'/'> &|{#"#"w"mov ax,0"s'''k{1+,~,'0'-}h'h'cm~'"'k{#"#"w"lea ax,$+5"s mji@hm"db "ss",0"sm'l'ci@h':'ci#@1+$!~'`'k{1+#,'`'-(#,c1+#,'`'-) ~'{'k{vu_"_"wz~'~'k{ji@hm'l'cuh':'ca~'}'k{u'l'ch':'c~'('k{v"_"wz ~')'k{ujuhm'l'ch':'c~'['k{vz"dec ax"sm~']'k{ujuhm'l'ch':'c"_"w~ "call @"s#,bm}}}}}}}}}}_;:df@$of!nt,(':'t,={njt,##bm'@'cb':'c0qt ,+.nt,';'-(twnt,';'-)"ret"sm'l'cb':'c~'%'t,={ntd~tw}}nt,)f@xf!; '{'#[#q+1$.]0p!'@'#+##,#{1+}+0$.2+d"ret"sm'a'-[#q+'a'+,{'@'c#'a' +#b':'c"#"w"lea ax,d+0"s'A'-' '#**h'h'cm"ret"sm}] "d dw 29696 dup(?)"sm"end"s Шутка... впрочем, приведенный выше код транслируется и работает. Чуть позже выложу рабочий вариант. Пока сделал в лоб, получилось примерно 2.5/4К исполняемый файл/исходники, буду оптимизировать. |
Автор: | f02732 [ Вт авг 06, 2019 00:45 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Это чем-то зашифровано? |
Страница 1 из 15 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |