=AK= 10 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба Часто современные Форт системы транслируют код в нативные команды целевого железа! Это когда гонятся за скоростью. Помнится, такой Форт для РС по имени SPF4 (со встроенным оптимизатором) "уделывал" по бенчмаркам С-шные программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 16 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба А как там с объектноориентированностью и прочими абстракциями? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 8 мая, 2009 Опубликовано 8 мая, 2009 (изменено) · Жалоба А как там с объектноориентированностью и прочими абстракциями? Реализаций ООП для Форта существуют разные - от несколько десятков строк до ... в SPF4 ( http://spf.sourceforge.net/ ) , в основном от одного разработчика, но SPF4 это для программирования на PC. В других Форт системах могут иметь свои различия. P.S. Есть ещё "абстракции" у разработчиков разных Форт систем.Что интересует? ( модули, парсеры, BNF, back tracing, регулярные выражения, автоматы и др. ) Помнится, такой Форт для РС по имени SPF4 (со встроенным оптимизатором) "уделывал" по бенчмаркам С-шные программы. Не уделывал, а давал сопоставимые результаты, ( см. http://www.forth.org.ru/~af/shootout.htm результаты тестирования отчасти устарели ) но при желании добавляя правила в оптимизатор можно и обойти:) P.S. Опережал, возможно, на рекурсивном тесте Фибоначи. Изменено 8 мая, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба А как там с объектноориентированностью и прочими абстракциями? Вот интересная полемика на эту тему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 8 мая, 2009 Опубликовано 8 мая, 2009 (изменено) · Жалоба Это когда гонятся за скоростью. Оценочная таблица производительности некоторых Форт систем. ( С SPF4 были некоторые проблемы для двух тестов \ т.к. у SPF4 одно пространство для кода и данных , но сейчас возможно уже всё исправлено ) ************************************************* Pentium 4 2.8GHz, 512Mb DDR266 RAM, Windows XPpro ************************************************* VFX VFX Forth for Windows v3.70 [build 1706] SF2 SwiftForth 2.2.2.9 07 May 2001 iForth version 1.12.8722, generated 23:39:13, June 8, 2002. SP-Forth Version 4.00 Build 015 at 29.Apr.2004 W32F Win32Forth 6.09.12 Build 6 (indirect threaded code) gff gforth-fast 0.6.2 All with no specifics and no hackery Test time including overhead (ms) VFX iForth SF2 SPF4 W32F gff DO LOOP 16 0 16 0 15 3 + 0 0 0 0 0 4 M+ 0 16 0 16 16 9 * 0 0 15 0 31 5 / 16 16 16 16 16 15 M* 15 0 16 15 16 8 M/ 0 15 0 16 31 86 /MOD 16 16 31 16 15 15 */ 15 15 15 31 47 95 ARRAY fill 16 32 16 0 32 11 ================================================================================ ===== Total: 94 110 125 110 219 251 Win32 API: SendMessage 0 0 16 0 15 0 Win32 API: GetTickCount 63 47 15 79 16 570 System I/O: KEY? 0 0 282 265 0 717 ================================================================================ ===== Total: 63 47 313 344 31 1287 Eratosthenes sieve 1899 Primes 94 203 281 172 1375 262 Fibonacci recursion ( 35 -> 9227465 ) 188 343 156 172 1562 480 Hoare's quick sort (reverse order) 78 485 281 141 1407 467 Generate random numbers (1024 kb array) 140 1031 141 1015 1468 235 LZ77 Comp. (400 kb Random Data Mem>Mem) 157 1500 1047 703 2219 470 Dhrystone (integer) 156 219 297 157 1734 363 ================================================================================ ===== Total: 813 3781 2203 2360 9765 2277 Time (ratio to VFX): 1.00 4.65 2.71 2.90 12.01 2.80 P.S. SPF4 не самая быстрая Форт система для PC ( коммерческая VFX \ кроме SF2 и i-Forth показывает лучшие результаты ) Изменено 8 мая, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 12 мая, 2009 Опубликовано 12 мая, 2009 (изменено) · Жалоба В SeaForth ~32 ( про него можно почитать публикацию в 4-ом номере журнала "Компоненты и технологии" за этот год. И по ссылке автора статьи " Процессоры семейства SeaForth" Изменено 12 мая, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 16 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Почитал немного, ознакомился, скачал тинибут. Всё вроде бы хорошо, однако непонятно, как быть с прерываниями. Что-то в явном виде не нашёл нигде А без них ведь никак... Или может не с того начал? АВР вообще-то не моя тема, мне ближе МСП Вот кой-чего по МСП нашёл, но товарищи хотят 180 стерлингов фунтов за комплект Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Почитал немного, ознакомился, скачал тинибут. Всё вроде бы хорошо, однако непонятно, как быть с прерываниями. Что-то в явном виде не нашёл нигде Прерывания описываются через директиву ORG ( сами ветора для разных контроллеров описаны в конфигурационном файле начинающееся с INT ) Например в demoavr: here \ оставим на стеке текущий указатель в строящемся целевом образе Flash \ resolve interrupt vectors ----------------------------------------- 000 org assemble rjmp b_cold c; \ пропишем по 0 адресу вектор холодного старта INT_T0OV org assemble rjmp T0isr c; \ ... org \ востановим указатель по запомненному HERE со стека Или может не с того начал? АВР вообще-то не моя тема, мне ближе МСП MSP430 в tinyboot не поддержан, но это не так сложно т.к. он близок к PDP-11. а под него уже есть адаптация:) P.S. А что скачали - оригинальный дистрибутив или с сайта радиолюбителей версию только для Mega128? Есть некоторый "вольный" перевод документации из неё. Вот кой-чего по МСП нашёл, но товарищи хотят 180 стерлингов фунтов за комплект Для MSP430 есть и свободные Форт разработки. P.S. Требуемую функциональнось Форта для MSP можно сделать своими силами.:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 16 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба P.S. А что скачали - оригинальный дистрибутив или с сайта радиолюбителей версию только для Mega128? Есть некоторый "вольный" перевод документации из неё. Всё скачал, что только было. И оригинал, и мод мегу, и дополнения одного товарища, который форт ниасилил, зато приспособил под структурный ассемблер P.S. Требуемую функциональнось Форта для MSP можно сделать своими силами.:) Это я уже понял, как глянул на исходник инлайн -ассемблера Однако, как всегда, хочется готовое что-то найти, чтобы не изобретать велосипед. Да и времени не так уж много. По работе образовался прогал, вот и развлекаюсь для общего развития. А в прерываниях как я понимаю, надо вручную сохранять весь контекст, ведь если прервали на полуслове, в регистрах может содержаться какая-то промежуточная информация. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Однако, как всегда, хочется готовое что-то найти, чтобы не изобретать велосипед. Да и времени не так уж много. По работе образовался прогал, вот и развлекаюсь для общего развития. В Форте, часто, разработчики создают "свои велосипеды" из своего понимания необходимости:) Есть ещё коммерческие VFX и SwiftForth, но для них не под все контроллеры имеются ключики, да и держать свою Форт систему под полным контролем надёжнее. Для MSP можно взять разные варианты кросс-компиляции ( есть с использованием SPF4 создания hex кодов для проекта в IAR ссылка на Форт для разных контроллеров была выше) А в прерываниях как я понимаю, надо вручную сохранять весь контекст, ведь если прервали на полуслове, в регистрах может содержаться какая-то промежуточная информация. Скорее всего, только общие регистры временного использования ( см распределение регистров ), а с другими обращаться "внимательней". Примитивы Форта, в основном, используют 2-3,4 регистра для своей операции. Под верхушку стека резервируют один регистр - остальная часть стека в памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Примитивы Форта, в основном, используют 2-3,4 регистра для своей операции. Под верхушку стека резервируют один регистр - остальная часть стека в памяти. Это если не подключать тяжёлых словарей типа плавающей точки и вычислений с длинными числами. Но это опять же зависит от функции, выполняемой в прерывании. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Это если не подключать тяжёлых словарей типа плавающей точки и вычислений с длинными числами. Но это опять же зависит от функции, выполняемой в прерывании. Плавающая точка может быть реализована и через примитивы Форта:) ( эффективно это или нет не знаю, но в FF оно есть ) + глобальные переменные если не использовать локальных. а использование прерываний можно организовать по разному. P.S. Какое продвижение в использовании Форта было у Вас и можно ли увидеть эти наработки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 16 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Плавающая точка может быть реализована и через примитивы Форта:) ( эффективно это или нет не знаю, но в FF оно есть ) + глобальные переменные если не использовать локальных. Вчера полдня читал книжку, в которой плавающая точка гневно осуждается, а вместо неё рекомендуется применять операцию масштабирования */ и фиксированную двоичную точку. А мы как-то не задумываясь лепим плавающую математику где ни попадя... Притом что недавно попались результаты тетсбенчей - плавающее деление на МСП выполняется что-то около 900 мкс (!) Целочисленное - на порядок быстрее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Целочисленное - на порядок быстрее К сожалению - нет. Деление, что целочисленное, что с ПЗ - почти одинаково. Там же, грубо говоря, одно на другое разделить, а порядки - вычесть. Ну и плюс нормализация. Умножение - тоже (умножаем и складываем порядки). Сложение и вычитание - вот там заметно медленнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба P.S. Какое продвижение в использовании Форта было у Вас и можно ли увидеть эти наработки? Увы, продвижением самого Форта я не занимался, сроки были больно сжатые. Я всего лишь писал приложение (для AT90S8515) на базе того, что было на тот момент в TinyBoot. Потом, где-то через год пытался переписать всё на С под IAR, но не влез в доступную flash. Исходники мне не принадлежат, поэтому выложить не могу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться