Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт июн 19, 2018 16:36

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 19, 2009 18:02 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
until узнает адрес во время компиляции.
Он компилирует условный переход назад. (код перехода и адрес!)
А адрес, куда переходить (в режиме компиляции!) begin кладет на стек данных и until его оттуда подбирает.
Если компиляцию оборвать не вовремя, например, поставить ; до until поставить, то возникнет проблема... аналогично, если until использовать без begin.


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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 19, 2009 18:25 
Не в сети

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
: wait ( n -- )
250 * ( n 250 -- k)
begin ( k -- k addr )
1ms ( -- )
1- ( k addr -- k addr') \ если begin кладёт адресс на стек данных, то после 1- должен будет уменьшиться адрес на не счётчик! Или как?
...

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 19, 2009 18:57 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
begin - это делает в режиме компиляции, а не в момент исполнения слова wait

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

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

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

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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 20, 2009 13:20 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
Всеш таки почитать кое чего (по форту) не мешало бы :roll:
Перед тем как светодиоды мучать :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 12:29 
Не в сети

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
_Harry писал(а):
Всеш таки почитать кое чего (по форту) не мешало бы :roll:
Перед тем как светодиоды мучать :)


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 12:51 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4920
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
iv_ru писал(а):
С чего начать?


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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 13:22 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
iv_ru писал(а):
С чего начать?


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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 13:39 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
iv_ru писал(а):
всё правильно?


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

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


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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 16:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
Пару слов о том, что такое разрешение. Это не антоним "запрещения", а перевод слова resolving (разрешение в смысле "нахождение решения"). Вся соль в том, что слова между двумя управляющими словами не выполняются, а компилируются, так что ничего на стеке не образуется.

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


Последний раз редактировалось Hishnik Вт июн 23, 2009 19:28, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 23:48 
Не в сети
Аватара пользователя

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

_________________
У России - только четыре союзника: её Армия, Флот и Авиация с Космическими Войсками.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth для ARM'а
СообщениеДобавлено: Ср июл 13, 2011 18:42 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 212
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Коллеги! Есть доступ к "телу" LPC2478 http://www.terraelectronica.ru/news_made.php?ID=4

Очень нужен Forth для скорейшего старта. Желателен stand-alone forth (хотя бы уровня amForth4). Донное гугление принесло невразумительные результаты.
Склоняюсь к решению писать с нуля на ассемблере, под IAR EW for ARM 5.50 Kickstart Edition. Думается, практические результаты будут интересны не мне одному ( как минимум двоим-троим участникам форт-форума)

Начнем?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth для ARM'а
СообщениеДобавлено: Ср июл 13, 2011 19:12 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1254
Благодарил (а): 3 раз.
Поблагодарили: 16 раз.
А что, другие арм-форты не подходят?

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth для ARM'а
СообщениеДобавлено: Ср июл 13, 2011 19:12 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 581
Благодарил (а): 6 раз.
Поблагодарили: 25 раз.
можно попробовать SwiftX - там есть версии для LPC-шек


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth для ARM'а
СообщениеДобавлено: Ср июл 13, 2011 20:54 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
Нужен кросс-компилятор, или форт в ARM?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth для ARM'а
СообщениеДобавлено: Чт июл 14, 2011 13:31 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Я пользуюсь распределенной Форт-системой
Под Ubuntu http://depositfiles.com/files/i5zrhtfsz

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB