Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Forth для ARM'а |
|
|
|
|
|
Добавлено: Сб ноя 26, 2011 14:44 |
|
|
|
|
|
Заголовок сообщения: |
Re: Forth для ARM'а |
|
|
Я пользуюсь распределенной Форт-системой Под Ubuntu http://depositfiles.com/files/i5zrhtfszforth.elf - модуль для прошивки rr.sh - запуск системы Отвечу на вопросы.
Я пользуюсь распределенной Форт-системой Под Ubuntu http://depositfiles.com/files/i5zrhtfsz
forth.elf - модуль для прошивки rr.sh - запуск системы
Отвечу на вопросы.
|
|
|
|
Добавлено: Чт июл 14, 2011 13:31 |
|
|
|
|
|
Заголовок сообщения: |
Re: Forth для ARM'а |
|
|
Нужен кросс-компилятор, или форт в ARM?
Нужен кросс-компилятор, или форт в ARM?
|
|
|
|
Добавлено: Ср июл 13, 2011 20:54 |
|
|
|
|
|
Заголовок сообщения: |
Re: Forth для ARM'а |
|
|
можно попробовать SwiftX - там есть версии для LPC-шек
можно попробовать SwiftX - там есть версии для LPC-шек
|
|
|
|
Добавлено: Ср июл 13, 2011 19:12 |
|
|
|
|
|
Заголовок сообщения: |
Re: Forth для ARM'а |
|
|
А что, другие арм-форты не подходят?
А что, другие арм-форты не подходят?
|
|
|
|
Добавлено: Ср июл 13, 2011 19:12 |
|
|
|
|
|
Заголовок сообщения: |
Re: Forth для ARM'а |
|
|
Коллеги! Есть доступ к "телу" LPC2478 http://www.terraelectronica.ru/news_made.php?ID=4Очень нужен Forth для скорейшего старта. Желателен stand-alone forth (хотя бы уровня amForth4). Донное гугление принесло невразумительные результаты. Склоняюсь к решению писать с нуля на ассемблере, под IAR EW for ARM 5.50 Kickstart Edition. Думается, практические результаты будут интересны не мне одному ( как минимум двоим-троим участникам форт-форума) Начнем?
Коллеги! Есть доступ к "телу" LPC2478 http://www.terraelectronica.ru/news_made.php?ID=4
Очень нужен Forth для скорейшего старта. Желателен stand-alone forth (хотя бы уровня amForth4). Донное гугление принесло невразумительные результаты. Склоняюсь к решению писать с нуля на ассемблере, под IAR EW for ARM 5.50 Kickstart Edition. Думается, практические результаты будут интересны не мне одному ( как минимум двоим-троим участникам форт-форума)
Начнем?
|
|
|
|
Добавлено: Ср июл 13, 2011 18:42 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Здесь, ещё по ИМХУ, необходимо сделать акцентирование ИМЕННО, на том, что, по сути в Форте НЕТ чётко выраженного (Привычного!) разделения на стадии (этапы) "компиляции" и "исполнения". Во время и того, и другого, система может совершенно произвольно переключаться из режима в режим.
Интересно, что с таким феноменом - "не компилятор компилирует, а - САМИ слова" - многие просто не могут управится в своей голове! ВОт она сила традиций и заскорузлости мэйнстрима! Там даже намёка нет на представление о всех возможностях и гибкостях, которые может получить фортер от своей системы!
Но, зато, как интересно наблюдать за глазами тех, кто вдруг "просекает"!!! - из-за одного этого стОит людям Форт давать.
Здесь, ещё по ИМХУ, необходимо сделать акцентирование ИМЕННО, на том, что, по сути в Форте НЕТ чётко выраженного (Привычного!) разделения на стадии (этапы) "компиляции" и "исполнения". Во время и того, и другого, система может совершенно произвольно переключаться из режима в режим.
Интересно, что с таким феноменом - "не компилятор компилирует, а - САМИ слова" - многие просто не могут управится в своей голове! ВОт она сила традиций и заскорузлости мэйнстрима! Там даже намёка нет на представление о всех возможностях и гибкостях, которые может получить фортер от своей системы!
Но, зато, как интересно наблюдать за глазами тех, кто вдруг "просекает"!!! - из-за одного этого стОит людям Форт давать.
|
|
|
|
Добавлено: Пн июн 22, 2009 23:48 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Пару слов о том, что такое разрешение. Это не антоним "запрещения", а перевод слова resolving (разрешение в смысле "нахождение решения"). Вся соль в том, что слова между двумя управляющими словами не выполняются, а компилируются, так что ничего на стеке не образуется.
begin -- addr, 3 - представим, что begin кладет сначала адрес, где он поставился, а поверх него идентификатор 3 (просто так)
2 2 + dup \ это все скомпилировалось, так что на стеке все равно осталось addr 3
until \ этому слову абсолютно все равно, откуда взялись числа на стеке. оно будет не компилироваться, а исполняться, потому что имеет признак немедленного исполнения. Оно проверит, что на стеке есть 3 (таким образом делается контроль парности управляющих структур, к примеру, if может класть после адреса 1, и при незакрытом if слово until найдет остатки от работы этой структуры, и сообщит об ошибке). Затем на стеке есть адрес "неразрешенной ссылки назад". Это означает, что транслятор запомнил адрес, на который надо прыгать слову until, но еще не имеет никакого представления, кто именно будет туда прыгать и с какого места. Может быть, и не until, а again или вообще какое-то пользовательское слово управления. В любом случае, слово until пишется так, чтобы оно сначала проверило наличие на стеке 3, и если оно есть, то вставило в код "условный переход на адрес addr". Вот из таких независимых кусочков и собирается программа компилятором Форта.
Пару слов о том, что такое разрешение. Это не антоним "запрещения", а перевод слова resolving (разрешение в смысле "нахождение решения"). Вся соль в том, что слова между двумя управляющими словами не выполняются, а компилируются, так что ничего на стеке не образуется.
[b]begin [/b] -- [i]addr, 3[/i] - представим, что begin кладет сначала адрес, где он поставился, а поверх него идентификатор 3 (просто так)
[b]2 2 + dup[/b] \ это все скомпилировалось, так что на стеке все равно осталось [i]addr 3[/i]
[b]until[/b] \ этому слову абсолютно все равно, откуда взялись числа на стеке. оно будет не компилироваться, а исполняться, потому что имеет признак немедленного исполнения. Оно проверит, что на стеке есть 3 (таким образом делается контроль парности управляющих структур, к примеру, if может класть после адреса 1, и при незакрытом if слово until найдет остатки от работы этой структуры, и сообщит об ошибке). Затем на стеке есть адрес "неразрешенной ссылки назад". Это означает, что транслятор запомнил адрес, на который надо прыгать слову until, но еще не имеет никакого представления, кто именно будет туда прыгать и с какого места. Может быть, и не until, а again или вообще какое-то пользовательское слово управления. В любом случае, слово until пишется так, чтобы оно сначала проверило наличие на стеке 3, и если оно есть, то вставило в код "условный переход на адрес addr". Вот из таких независимых кусочков и собирается программа компилятором Форта.
|
|
|
|
Добавлено: Пн июн 22, 2009 16:27 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): всё правильно?
И с какой точностью тикают секунды ( светодиоды? )? iv_ru писал(а): Я так и не понял откуда until знает где стоит begin? могу только представить, что существует Адрес-Стек куда begin кладёт свой адрес а until его читает... Это так или нет?
слово Веgin имеет признак немедленного исполнения и вызов его не компилируется в код
( а могло и не так быть для режима исполнения)
Обычно во время компиляции слова немедленного исполнения
служат для управления ей же. и результаты своего выполнения могут оставлять
и на стеке данных ( если нет стека управления CS - поддержки компиляции )
А until даже и не знает о begin, а лишь разрешает ситуацию со ссылкой вперёд.
P.S. В Форте можно создавать разнообразные свои структуры управления.
[quote="iv_ru"] всё правильно? [/quote]
И с какой точностью тикают секунды ( светодиоды? )?
[quote="iv_ru"] Я так и не понял откуда until знает где стоит begin? могу только представить, что существует Адрес-Стек куда begin кладёт свой адрес а until его читает... Это так или нет?[/quote]
слово [b]Веgin[/b] имеет признак немедленного исполнения и вызов его не компилируется в код
( а могло и не так быть для режима исполнения)
Обычно во время компиляции слова немедленного исполнения
служат для управления ей же. и результаты своего выполнения могут оставлять
и на стеке данных ( если нет стека управления CS - поддержки компиляции )
А [b] until [/b] даже и не знает о begin, а лишь разрешает ситуацию со ссылкой вперёд.
P.S. В Форте можно создавать разнообразные свои структуры управления.
|
|
|
|
Добавлено: Пн июн 22, 2009 13:39 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): С чего начать?
Можно и отсюда:) Форт в русской википедии
Книги в конце странички.
P.S. Или английскую версию про Форт
( к mOleg или all: что из неё принципиального желательно отобразить в русской версии?)
[quote="iv_ru"] С чего начать?[/quote]
Можно и отсюда:) [url=http://ru.wikipedia.org/wiki/Forth]Форт в русской википедии[/url]
Книги в конце странички.
P.S. Или [url=http://en.wikipedia.org/wiki/Forth_(programming_language)]английскую версию про Форт[/url]
( к mOleg или all: что из неё принципиального желательно отобразить в русской версии?)
|
|
|
|
Добавлено: Пн июн 22, 2009 13:22 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): С чего начать?
с раздела Книги
а точнее Starting Forth в переводе
и его продолжения Thinking Forth так же в переводе
а так же раздела статьи - где есть статьи начального уровня, в частности мои (mOleg)
[quote="iv_ru"]С чего начать?[/quote]
с раздела [url=http://fforum.winglion.ru/viewforum.php?f=37]Книги[/url]
а точнее [url=http://fforum.winglion.ru/viewtopic.php?t=2017]Starting Forth[/url] в переводе
и его продолжения [url=http://fforum.winglion.ru/viewtopic.php?t=2011]Thinking Forth[/url] так же в переводе
а так же раздела [url=http://fforum.winglion.ru/viewforum.php?f=34]статьи[/url] - где есть статьи начального уровня, в частности мои (mOleg)
|
|
|
|
Добавлено: Пн июн 22, 2009 12:51 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
_Harry писал(а): Всеш таки почитать кое чего (по форту) не мешало бы Перед тем как светодиоды мучать
С чего начать?
[quote="_Harry"]Всеш таки почитать кое чего (по форту) не мешало бы :roll: Перед тем как светодиоды мучать :)[/quote]
С чего начать?
|
|
|
|
Добавлено: Пн июн 22, 2009 12:29 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Всеш таки почитать кое чего (по форту) не мешало бы
Перед тем как светодиоды мучать
Всеш таки почитать кое чего (по форту) не мешало бы :roll:
Перед тем как светодиоды мучать :)
|
|
|
|
Добавлено: Сб июн 20, 2009 13:20 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
begin - это делает в режиме компиляции, а не в момент исполнения слова wait
: берет следующее слово wait
и организует начало этого слова в памяти.
далее все слова компилируются так, что при вызове слова wait они окажутся исполненными.
begin - формально ничего в память не компилирует, он лишь сохраняет адрес места, где этот begin встретился в определении слова, чтобы через некоторое время этот адрес был вписан в программу словом until.
само же слово until компилирует в память условный переход назад, по тому самому адресу, что слово begin ему оставило.
И адрес этот во время исполнения программы никуда не перемещается. Он просто - часть программы, часть кода условного перехода.
Непонятности явно из-за непонимания того, как сам форт работает.
И в этом месте надо бы ликбез провести...
begin - это делает в режиме компиляции, а не в момент исполнения слова [b]wait[/b]
[b]:[/b] берет следующее слово [b]wait[/b]
и организует начало этого слова в памяти.
далее все слова компилируются так, что при вызове слова [b]wait[/b] они окажутся исполненными.
[b]begin[/b] - формально ничего в память не компилирует, он лишь сохраняет адрес места, где этот [b]begin[/b] встретился в определении слова, чтобы через некоторое время этот адрес был вписан в программу словом [b]until[/b].
само же слово [b]until[/b] компилирует в память условный переход назад, по тому самому адресу, что слово begin ему оставило.
И адрес этот во время исполнения программы никуда не перемещается. Он просто - часть программы, часть кода условного перехода.
Непонятности явно из-за непонимания того, как сам форт работает.
И в этом месте надо бы ликбез провести...
|
|
|
|
Добавлено: Пт июн 19, 2009 18:57 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
: wait ( n -- )
250 * ( n 250 -- k)
begin ( k -- k addr )
1ms ( -- )
1- ( k addr -- k addr') \ если begin кладёт адресс на стек данных, то после 1- должен будет уменьшиться адрес на не счётчик! Или как?
...
И вот далее ничего не понятно...
: wait ( n -- )
250 * ( n 250 -- k)
begin ( k -- k addr )
1ms ( -- )
1- ( k addr -- k addr') \ если begin кладёт адресс на стек данных, то после 1- должен будет уменьшиться адрес на не счётчик! Или как?
...
И вот далее ничего не понятно...
|
|
|
|
Добавлено: Пт июн 19, 2009 18:25 |
|
|
|
|