Forth http://fforum.winglion.ru/ |
|
Очередной AVRForth http://fforum.winglion.ru/viewtopic.php?f=39&t=2797 |
Страница 4 из 11 |
Автор: | `Kopa [ Сб фев 25, 2012 23:00 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
oco писал(а): Что понимается под "базовым уровнем SPF"? Обобщённо - настраиваемый "метауровень" макрооптимизатора в SPF4 для генерации, по возможностям, кода на отличный от x86 "камень":) P.S. Реально ли и в какой степени такое? т.к. есть "ощущение", что генерация кода с команд одного процессора в команды другого процессора вполне осуществима. (есть же проект "компилирующий" ассемблер от chess:) не придираясь к терминологии) |
Автор: | `Kopa [ Сб фев 25, 2012 23:15 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
oсo писал(а): Какие еще предложения будут? т.к. ассемблер используется постфиксный, то формат команд и их мнемоник можно привести к более "осязаемому" базису как вариант рассмотреть базис Algorithm Builder http://algrom.net/russian.html |
Автор: | oco [ Сб фев 25, 2012 23:28 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
`Kopa писал(а): oco писал(а): Что понимается под "базовым уровнем SPF"? Обобщённо - настраиваемый "метауровень" макрооптимизатора в SPF4 для генерации, по возможностям, кода на отличный от x86 "камень":) P.S. Реально ли и в какой степени такое? т.к. есть "ощущение", что генерация кода с команд одного процессора в команды другого процессора вполне осуществима. (есть же проект "компилирующий" ассемблер от chess:) не придираясь к терминологии) В проект Михаил встроил оптимизатор, совершенно аналогичный SPF. Надо только написать для него правила. |
Автор: | oco [ Сб фев 25, 2012 23:33 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
`Kopa писал(а): oсo писал(а): Какие еще предложения будут? т.к. ассемблер используется постфиксный, то формат команд и их мнемоник можно привести к более "осязаемому" базису как вариант рассмотреть базис Algorithm Builder http://algrom.net/russian.html Так это же ассемблер, он стандартный. Или я не так понял, поясните |
Автор: | oco [ Сб фев 25, 2012 23:35 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
`Kopa писал(а): oco писал(а): Какие еще предложения будут? Может быть совмешение, по возможности с базисными словами, из других Форт систем для контроллеров и/или в частности с amForth. Посмотрел. Не все так плохо Стандарт есть стандарт. Есть несущественные отличия, но думаю, менять ничего не нужно. |
Автор: | oco [ Вс фев 26, 2012 01:08 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
Гость писал(а): п.9,10 Операця and и её замена одной командой воздействует на флаги процессора. Если после этого их никто не изменяет (dup точно не должна изменить, но могут ещё вклиниваться прерывания, но там должен регистр флагов сохраняться) В общем случае and не заменить одной командой, процессор 8-бит, а ячейка - 16, and реализуется так: Код: poptmp tmpl tosl and tmph tosh and Команды две, флаг останется от последней. |
Автор: | `Kopa [ Вс фев 26, 2012 11:22 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
oco писал(а): Так это же ассемблер, он стандартный. Или я не так понял, поясните Ассемблер стандартный для AVR, но имеет много мнемоник и они не очень "осязаемы", плюс учёт разных их тонкостей. |
Автор: | `Kopa [ Вт фев 28, 2012 21:21 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
oco писал(а): [ В общем случае and не заменить одной командой, процессор 8-бит, а ячейка - 16, Может тогда имеет смысл ввести команды, например с префиксом b , для обозначения операций над байтами? ( пример: b& bxor b| и др.) |
Автор: | oco [ Ср фев 29, 2012 03:17 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
`Kopa писал(а): oco писал(а): [ В общем случае and не заменить одной командой, процессор 8-бит, а ячейка - 16, Может тогда имеет смысл ввести команды, например с префиксом b , для обозначения операций над байтами? ( пример: b& bxor b| и др.) В принципе можно. Кстати, сейчас можно прямо в форт-словах использовать ассемблер, в котором есть управляющие конструкции if-else-then, begin-until, они совместимы с фортовскими Пример: Код: : XXX [ 0x3 tosl andi ] \ логическое "и" с младшим байтом числа на вершине стека if_z \ используется флаг Z контроллера, со стека результат не снимается YYY ELSE ZZZ THEN ; Определены в файле inline.spf |
Автор: | oco [ Пн мар 19, 2012 18:17 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
Версия 0.3 Что нового: - исправлены ошибки - теперь используется только словарь TARGET, поэтому стало проще выискивать трудноуловимые ошибки, когда слово было в словаре FORTH, но не было в TARGET. Сейчас просто выдается сообщение о ненайденном слове - Руководство, почти оконченное, осталось описать несколько библиотек http://compas.com.ua/oco/file/avrforth0.3.tar.gz Жду ваших предложений по руководству До остального пока не доходят руки |
Автор: | Kopa [ Пн мар 19, 2012 18:52 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
oco писал(а): Версия 0.3 Жду ваших предложений по руководству До остального пока не доходят руки Ещё немного и будет версия 1.0 Тут, кстати, ещё одна ссылка на Форт для AVR пробежала FlashForth ещё не смотрел, но вроде есть некая оптимизация. (поторопился нет там оптимизации) написан на ассмблере Строка компиляции для Windows версии Код: spf4.exe UNIX-LINES S" program.spf" S" devices/atmega8.spf" avrforth.spf BYE не выполнится т.к. S" ...." S" ...." разместятся во временной области и к моменту использования с помощью INCLUDED в файле avrforth.spf уже не будут правильны. (лучше сразу их самому сохранить в отдельном выделенном буфере для этих целей при выполнении avrforth.spf) Может существуют и другие более элегантные решения. В ядре, возможно, имеет смысл добавить аналоги возможных родных команд контроллера в Форт варианте. По документации: в табличке указать аналоги стандартных Форт слов, если оно изменено. указать также есть ли аналог данного слова, например в amForth (SPF4), или оно введено в даннном Форте. слово BIT в режиме исполнения не совсем ясно что делает. Не увидел в табличке слова WHILE J +LOOP в документации можно указать возможность использовать маленький регистр слов на базисе SPF4 (тогда код ассемблера всегда придётся оформлять в скобках?) P.S. До чего ещё руки не "дошли"? Какие устройства (или примеры) планируется запустить в рамках этой Форт-системы? Можно сделать и сборку Форта с возможностью добавлять слова в интерактивном режиме работы. ( в документации написано что можно взять для этого amForth, а на каком уровне они совместимы или нет?) P.S. Возможно, имеет смысл, разместить проект например на площадке sourceforge? По кодировке текста в файлах (хотя и не так принципиально). Возможно компромисное решение, например 866 кодировка? Вместо DOC-файла можно формировать PDF. Исполняемые файлы SPF4 можно убрать из архива сказанием где их можно взять:) |
Автор: | spf [ Вт мар 20, 2012 00:48 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
Kopa писал(а): Код: spf4.exe UNIX-LINES S" program.spf" S" devices/atmega8.spf" avrforth.spf BYE не выполнится т.к. S" ...." S" ...." разместятся во временной области и к моменту использования с помощью INCLUDED в файле avrforth.spf уже не будут правильны.В spf/4, при немедленном исполнении все строковые литералы актуальны до конца исполнения соответствующей строки исходного кода. А командная строка остается актуальной до заверешния программы. |
Автор: | spf [ Вт мар 20, 2012 08:12 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
Kopa писал(а): мне не удалось скомпилить через батник тест из приведённого проекта для Win32 без правки avrforth.spf файла У меня на 4.21 при пустом program.spf сработало без ошибок.В самом avrforth.spf некорректно использованы ">R" и "R>" — их допустимо использовать только внутри определений (т.к. "семантика интрепретации не определена"). Как вариант: использовать 2VARIALBE (lib/include/double.f), или подключить control-stack и его использовать для временного хранения. |
Автор: | chess [ Вт мар 20, 2012 09:46 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
oco писал(а): Жду ваших предложений по руководству Немного по особенностям реализации стеков параметров и возвратов написать и по использованию памяти. Вот к примеру как у меня написано(это не для AVR, но как пример): Код: • Гарвардская модель – код и данные разделены • Подпрограммный шитый код • Стек параметров во внутреннем ОЗУ, стек возвратов аппаратный • Использование внутреннего ОЗУ: - Область банков регистров общего назначения. - Область прямоадресуемых битов. - Стек возвратов аппаратный. Дно стека возвратов размещается в области прямоадресуемых битов или сразу за ней, в зависимости от требований программы, и растет в сторону увеличения адресов. Указателем вершины стека возвратов является SP. - Область переменных, векторов, массивов – между верхним адресом стека возвратов и стеком параметров. Верхний адрес стека возвратов задается в зависимости от требований программы. - Стек параметров. Дно размещается в конце внутренней памяти. Стек растет в сторону уменьшения адресов. В качестве верхней ячейки стека параметров используется DPTR. Указателем на вторую ячейку стека параметров является R0. • Использование внешнего ОЗУ: - Область переменных, векторов, массивов, адреса устройств ввода-вывода. И уже по набору слов из мануала замечания: 1. Добавить двойные переменные типа 2VARIABLE, 2VALUE(или 2QUAN) для разных областей памяти и константы 2CONSTANT. Часто разрядности 16 не хватает. 2. Слово WITHIN добавить. 3. Слова CMOVE> , MOVE добавить(и их модификации для разных типов памяти). |
Автор: | oco [ Ср мар 21, 2012 00:46 ] |
Заголовок сообщения: | Re: Очередной AVRForth |
Kopa писал(а): В ядре, возможно, имеет смысл добавить аналоги возможных родных команд контроллера в Форт варианте. Зачем, есть ассемблер Kopa писал(а): По документации: в табличке указать аналоги стандартных Форт слов, если оно изменено. указать также есть ли аналог данного слова, например в amForth (SPF4), или оно введено в даннном Форте. Подумаю Kopa писал(а): слово BIT в режиме исполнения не совсем ясно что делает. Просто оставляет маску на стеке. Поправил Kopa писал(а): Не увидел в табличке слова WHILE J +LOOP WHILE пропустил, исправил. J, +LOOP просто нет Kopa писал(а): в документации можно указать возможность использовать маленький регистр слов на базисе SPF4 (тогда код ассемблера всегда придётся оформлять в скобках?) Не знаю, мне как-то удобнее, форт - прописными, ассемблер - строчными Kopa писал(а): P.S. До чего ещё руки не "дошли"? Какие устройства (или примеры) планируется запустить в рамках этой Форт-системы? Хотел сделать некоторые предложенные оптимизации, см. файл TODO Устройства - пока еще не знаю, идей нет, что хотелось бы сделать. Kopa писал(а): Можно сделать и сборку Форта с возможностью добавлять слова в интерактивном режиме работы. (в документации написано что можно взять для этого amForth, а на каком уровне они совместимы или нет?) Изначально не хотел делать такой вариант, так как уже есть готовая система - amForth. По совместимости трудно сказать. Если использовать только стандартные слова - то да. Kopa писал(а): P.S. Возможно, имеет смысл, разместить проект например на площадке sourceforge? Возможно, сейчас еще рановато Kopa писал(а): По кодировке текста в файлах (хотя и не так принципиально). Возможно компромисное решение, например 866 кодировка? А чем не устраивает UTF? Kopa писал(а): Вместо DOC-файла можно формировать PDF. Возможно, не у всех стоит Open/Libre office, а захочется отредактировать что-нибудь Kopa писал(а): Исполняемые файлы SPF4 можно убрать из архива сказанием где их можно взять:) Они небольшие, пусть будут... |
Страница 4 из 11 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |