|
|
  |
А вот бы на FORTH написать..., ;-) |
|
|
|
May 8 2009, 07:50
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ May 8 2009, 09:05)  А как там с объектноориентированностью и прочими абстракциями? Реализаций ООП для Форта существуют разные - от несколько десятков строк до ... в SPF4 ( http://spf.sourceforge.net/ ) , в основном от одного разработчика, но SPF4 это для программирования на PC. В других Форт системах могут иметь свои различия. P.S. Есть ещё "абстракции" у разработчиков разных Форт систем.Что интересует? ( модули, парсеры, BNF, back tracing, регулярные выражения, автоматы и др. ) Цитата(=AK= @ May 8 2009, 08:54)  Помнится, такой Форт для РС по имени SPF4 (со встроенным оптимизатором) "уделывал" по бенчмаркам С-шные программы. Не уделывал, а давал сопоставимые результаты, ( см. http://www.forth.org.ru/~af/shootout.htm результаты тестирования отчасти устарели ) но при желании добавляя правила в оптимизатор можно и обойти  P.S. Опережал, возможно, на рекурсивном тесте Фибоначи.
Сообщение отредактировал Kopa - May 8 2009, 07:54
|
|
|
|
|
May 8 2009, 08:12
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(=AK= @ May 8 2009, 08:54)  Это когда гонятся за скоростью. Оценочная таблица производительности некоторых Форт систем. ( С 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 показывает лучшие результаты )
Сообщение отредактировал Kopa - May 8 2009, 08:15
|
|
|
|
|
May 13 2009, 05:40
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Почитал немного, ознакомился, скачал тинибут. Всё вроде бы хорошо, однако непонятно, как быть с прерываниями. Что-то в явном виде не нашёл нигде А без них ведь никак... Или может не с того начал? АВР вообще-то не моя тема, мне ближе МСП Вот кой-чего по МСП нашёл, но товарищи хотят 180 стерлингов фунтов за комплект
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
May 13 2009, 06:48
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ May 13 2009, 09:40)  Почитал немного, ознакомился, скачал тинибут. Всё вроде бы хорошо, однако непонятно, как быть с прерываниями. Что-то в явном виде не нашёл нигде Прерывания описываются через директиву 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 со стека Цитата(MrYuran @ May 13 2009, 09:40)  Или может не с того начал? АВР вообще-то не моя тема, мне ближе МСП MSP430 в tinyboot не поддержан, но это не так сложно т.к. он близок к PDP-11. а под него уже есть адаптация  P.S. А что скачали - оригинальный дистрибутив или с сайта радиолюбителей версию только для Mega128? Есть некоторый "вольный" перевод документации из неё. Цитата(MrYuran @ May 13 2009, 09:40)  Вот кой-чего по МСП нашёл, но товарищи хотят 180 стерлингов фунтов за комплект Для MSP430 есть и свободные Форт разработки. P.S. Требуемую функциональнось Форта для MSP можно сделать своими силами.
|
|
|
|
|
May 13 2009, 07:16
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Kopa @ May 13 2009, 10:48)  P.S. А что скачали - оригинальный дистрибутив или с сайта радиолюбителей версию только для Mega128? Есть некоторый "вольный" перевод документации из неё. Всё скачал, что только было. И оригинал, и мод мегу, и дополнения одного товарища, который форт ниасилил, зато приспособил под структурный ассемблер Цитата P.S. Требуемую функциональнось Форта для MSP можно сделать своими силами.  Это я уже понял, как глянул на исходник инлайн -ассемблера Однако, как всегда, хочется готовое что-то найти, чтобы не изобретать велосипед. Да и времени не так уж много. По работе образовался прогал, вот и развлекаюсь для общего развития. А в прерываниях как я понимаю, надо вручную сохранять весь контекст, ведь если прервали на полуслове, в регистрах может содержаться какая-то промежуточная информация.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
May 13 2009, 07:45
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ May 13 2009, 10:16)  Однако, как всегда, хочется готовое что-то найти, чтобы не изобретать велосипед. Да и времени не так уж много. По работе образовался прогал, вот и развлекаюсь для общего развития. В Форте, часто, разработчики создают "свои велосипеды" из своего понимания необходимости  Есть ещё коммерческие VFX и SwiftForth, но для них не под все контроллеры имеются ключики, да и держать свою Форт систему под полным контролем надёжнее. Для MSP можно взять разные варианты кросс-компиляции ( есть с использованием SPF4 создания hex кодов для проекта в IAR ссылка на Форт для разных контроллеров была выше) Цитата(MrYuran @ May 13 2009, 10:16)  А в прерываниях как я понимаю, надо вручную сохранять весь контекст, ведь если прервали на полуслове, в регистрах может содержаться какая-то промежуточная информация. Скорее всего, только общие регистры временного использования ( см распределение регистров ), а с другими обращаться "внимательней". Примитивы Форта, в основном, используют 2-3,4 регистра для своей операции. Под верхушку стека резервируют один регистр - остальная часть стека в памяти.
|
|
|
|
|
May 13 2009, 09:32
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(IgorKossak @ May 13 2009, 13:06)  Это если не подключать тяжёлых словарей типа плавающей точки и вычислений с длинными числами. Но это опять же зависит от функции, выполняемой в прерывании. Плавающая точка может быть реализована и через примитивы Форта ( эффективно это или нет не знаю, но в FF оно есть ) + глобальные переменные если не использовать локальных. а использование прерываний можно организовать по разному. P.S. Какое продвижение в использовании Форта было у Вас и можно ли увидеть эти наработки?
|
|
|
|
|
May 13 2009, 09:50
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Kopa @ May 13 2009, 13:32)  Плавающая точка может быть реализована и через примитивы Форта ( эффективно это или нет не знаю, но в FF оно есть ) + глобальные переменные если не использовать локальных. Вчера полдня читал книжку, в которой плавающая точка гневно осуждается, а вместо неё рекомендуется применять операцию масштабирования */ и фиксированную двоичную точку. А мы как-то не задумываясь лепим плавающую математику где ни попадя... Притом что недавно попались результаты тетсбенчей - плавающее деление на МСП выполняется что-то около 900 мкс (!) Целочисленное - на порядок быстрее
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|