Forth
http://fforum.winglion.ru/

Forth для ARM'а
http://fforum.winglion.ru/viewtopic.php?f=39&t=2110
Страница 2 из 3

Автор:  WingLion [ Пт июн 19, 2009 18:02 ]
Заголовок сообщения: 

until узнает адрес во время компиляции.
Он компилирует условный переход назад. (код перехода и адрес!)
А адрес, куда переходить (в режиме компиляции!) begin кладет на стек данных и until его оттуда подбирает.
Если компиляцию оборвать не вовремя, например, поставить ; до until поставить, то возникнет проблема... аналогично, если until использовать без begin.


Хороший компилятор подскажет, что такая проблема возникла...
Простой - промолчит, считая, что фортеру виднее.

Автор:  iv_ru [ Пт июн 19, 2009 18:25 ]
Заголовок сообщения: 

: wait ( n -- )
250 * ( n 250 -- k)
begin ( k -- k addr )
1ms ( -- )
1- ( k addr -- k addr') \ если begin кладёт адресс на стек данных, то после 1- должен будет уменьшиться адрес на не счётчик! Или как?
...

И вот далее ничего не понятно...

Автор:  WingLion [ Пт июн 19, 2009 18:57 ]
Заголовок сообщения: 

begin - это делает в режиме компиляции, а не в момент исполнения слова wait

: берет следующее слово wait
и организует начало этого слова в памяти.
далее все слова компилируются так, что при вызове слова wait они окажутся исполненными.

begin - формально ничего в память не компилирует, он лишь сохраняет адрес места, где этот begin встретился в определении слова, чтобы через некоторое время этот адрес был вписан в программу словом until.
само же слово until компилирует в память условный переход назад, по тому самому адресу, что слово begin ему оставило.
И адрес этот во время исполнения программы никуда не перемещается. Он просто - часть программы, часть кода условного перехода.

Непонятности явно из-за непонимания того, как сам форт работает.

И в этом месте надо бы ликбез провести...

Автор:  _Harry [ Сб июн 20, 2009 13:20 ]
Заголовок сообщения: 

Всеш таки почитать кое чего (по форту) не мешало бы :roll:
Перед тем как светодиоды мучать :)

Автор:  iv_ru [ Пн июн 22, 2009 12:29 ]
Заголовок сообщения: 

_Harry писал(а):
Всеш таки почитать кое чего (по форту) не мешало бы :roll:
Перед тем как светодиоды мучать :)


С чего начать?

Автор:  mOleg [ Пн июн 22, 2009 12:51 ]
Заголовок сообщения: 

iv_ru писал(а):
С чего начать?


с раздела Книги
а точнее Starting Forth в переводе
и его продолжения Thinking Forth так же в переводе
а так же раздела статьи - где есть статьи начального уровня, в частности мои (mOleg)

Автор:  Kopa [ Пн июн 22, 2009 13:22 ]
Заголовок сообщения: 

iv_ru писал(а):
С чего начать?


Можно и отсюда:) Форт в русской википедии
Книги в конце странички.

P.S. Или английскую версию про Форт
( к mOleg или all: что из неё принципиального желательно отобразить в русской версии?)

Автор:  Kopa [ Пн июн 22, 2009 13:39 ]
Заголовок сообщения: 

iv_ru писал(а):
всё правильно?


И с какой точностью тикают секунды ( светодиоды? )?

iv_ru писал(а):
Я так и не понял откуда until знает где стоит begin?
могу только представить, что существует Адрес-Стек куда begin кладёт свой адрес а until его читает... Это так или нет?


слово Веgin имеет признак немедленного исполнения и вызов его не компилируется в код
( а могло и не так быть для режима исполнения)
Обычно во время компиляции слова немедленного исполнения
служат для управления ей же. и результаты своего выполнения могут оставлять
и на стеке данных ( если нет стека управления CS - поддержки компиляции )
А until даже и не знает о begin, а лишь разрешает ситуацию со ссылкой вперёд.

P.S. В Форте можно создавать разнообразные свои структуры управления.

Автор:  Hishnik [ Пн июн 22, 2009 16:27 ]
Заголовок сообщения: 

Пару слов о том, что такое разрешение. Это не антоним "запрещения", а перевод слова resolving (разрешение в смысле "нахождение решения"). Вся соль в том, что слова между двумя управляющими словами не выполняются, а компилируются, так что ничего на стеке не образуется.

begin -- addr, 3 - представим, что begin кладет сначала адрес, где он поставился, а поверх него идентификатор 3 (просто так)
2 2 + dup \ это все скомпилировалось, так что на стеке все равно осталось addr 3
until \ этому слову абсолютно все равно, откуда взялись числа на стеке. оно будет не компилироваться, а исполняться, потому что имеет признак немедленного исполнения. Оно проверит, что на стеке есть 3 (таким образом делается контроль парности управляющих структур, к примеру, if может класть после адреса 1, и при незакрытом if слово until найдет остатки от работы этой структуры, и сообщит об ошибке). Затем на стеке есть адрес "неразрешенной ссылки назад". Это означает, что транслятор запомнил адрес, на который надо прыгать слову until, но еще не имеет никакого представления, кто именно будет туда прыгать и с какого места. Может быть, и не until, а again или вообще какое-то пользовательское слово управления. В любом случае, слово until пишется так, чтобы оно сначала проверило наличие на стеке 3, и если оно есть, то вставило в код "условный переход на адрес addr". Вот из таких независимых кусочков и собирается программа компилятором Форта.

Автор:  Wlad [ Пн июн 22, 2009 23:48 ]
Заголовок сообщения: 

Здесь, ещё по ИМХУ, необходимо сделать акцентирование ИМЕННО, на том, что, по сути в Форте НЕТ чётко выраженного (Привычного!) разделения на стадии (этапы) "компиляции" и "исполнения". Во время и того, и другого, система может совершенно произвольно переключаться из режима в режим.
Интересно, что с таким феноменом - "не компилятор компилирует, а - САМИ слова" - многие просто не могут управится в своей голове! ВОт она сила традиций и заскорузлости мэйнстрима! Там даже намёка нет на представление о всех возможностях и гибкостях, которые может получить фортер от своей системы!
Но, зато, как интересно наблюдать за глазами тех, кто вдруг "просекает"!!! - из-за одного этого стОит людям Форт давать.

Автор:  chu [ Ср июл 13, 2011 18:42 ]
Заголовок сообщения:  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. Думается, практические результаты будут интересны не мне одному ( как минимум двоим-троим участникам форт-форума)

Начнем?

Автор:  VoidVolker [ Ср июл 13, 2011 19:12 ]
Заголовок сообщения:  Re: Forth для ARM'а

А что, другие арм-форты не подходят?

Автор:  diver [ Ср июл 13, 2011 19:12 ]
Заголовок сообщения:  Re: Forth для ARM'а

можно попробовать SwiftX - там есть версии для LPC-шек

Автор:  Hishnik [ Ср июл 13, 2011 20:54 ]
Заголовок сообщения:  Re: Forth для ARM'а

Нужен кросс-компилятор, или форт в ARM?

Автор:  Mihail [ Чт июл 14, 2011 13:31 ]
Заголовок сообщения:  Re: Forth для ARM'а

Я пользуюсь распределенной Форт-системой
Под Ubuntu http://depositfiles.com/files/i5zrhtfsz

forth.elf - модуль для прошивки
rr.sh - запуск системы

Отвечу на вопросы.

Страница 2 из 3 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/