Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 00:06

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Forth for pda 4.0
СообщениеДобавлено: Ср окт 04, 2006 00:06 
Не в сети

Зарегистрирован: Вт окт 03, 2006 23:53
Сообщения: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Информация устарела.

новое смотрите в Компилятор Forth для Windows (реализация на Delphi)

_________________
Forth for pda 4.0


Последний раз редактировалось kufal Пт мар 23, 2007 09:26, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 04, 2006 02:06 
Не в сети

Зарегистрирован: Вт окт 03, 2006 11:36
Сообщения: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
У меня не заработало. Послал письмо.

_________________
Вадим.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 04, 2006 09:49 
Не в сети

Зарегистрирован: Вт окт 03, 2006 11:36
Сообщения: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия под Windows работает. Не работает на КПК. На КПК у меня Pocket PC 2002. Если скомпилированно на eVC++ 3.0, то должно работать. Процессор тут ни причем. Выдается сообщение "Не найден 'FORTH', или один из его компонентов. Убедитесь, что путь и имя файла указаны верно и доступны все нужные библиотеки". Хотя оба файла я кидал и в корень и в другие места (на случай, если при запуске ищется второй файл, хотя я не вижу в этом смысла). Я послал письмо со скриншотом.

_________________
Вадим.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 04, 2006 10:08 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Код:
Пример:
       "user32.dll" LoadLibrary constant USER32
       USER32 "MessageBoxA" GetProcAddress constant MessageBox
       0 0 0 0 5 MessageBox EXECUTE_WIN

Правильно ли я понял, что в число параметров входит и само число, передающее число параметров? :)

А вообще решение достаточно разумное. В СПФ с передачей параметров на стек Windows потенциально возможны проблемы. В 4.сколько-то я видел просто перекидывание 15 чисел, независимо от того, сколько в действительности надо.
Кстати, чтобы каждый раз не заморачиваться с указанием пятерки (четверки), можно вписывать требуемое число параметров рядом с адресом функции. Т.е нечто вроде

Код:
: WINAPI  CREATE , GetProcAddress , DOES> DUP @ 0 DO S>WIN LOOP  4 + EXECUTE ;


" MessageBoxA" 4 WINAPI MessageBox положит в память 4, а за ним адрес функции


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

Зарегистрирован: Вт окт 03, 2006 11:36
Сообщения: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
kufal писал(а):
по поводу исходника скомпилировать и будет работать - это не совсем так - forth сделан не на чистом C - очень важен тип процессора

Ну тогда другое дело. У меня довольно старенький ARM процессор - SA1110 206MHz.

Мне все-таки интересно как фактически на С сделать форт. Тут же нет ассемблера. Что прямо в машинных кодах что-ли?

_________________
Вадим.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
LV писал(а):
Мне все-таки интересно как фактически на С сделать форт. Тут же нет ассемблера. Что прямо в машинных кодах что-ли?

На Си достаточно просто написать почти любую виртуальную машину. Вкратце - вот так.

Заводим переменную - указатель на исполняемый код и таблицу кода. Пусть это int pc и int code[10000]. И поехали

cmd = code[pc];
switch cmd
0 case : тут команды для "нет операции"; pc++ ( не забываем перейти к новому адресу)
1 case ну и так далее - на каждый считанный из памяти код модифицируем что-то в программе
2 case

Конечно, это будет медленнее, чем простое выполнение машинного кода, но это просто принцип показан.


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

Зарегистрирован: Вт окт 03, 2006 11:36
Сообщения: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Спасибо, принцип виртуальной машины понял.

Но kufal, как я понял использует машинные команды процессора.
Допустим я их узнаю и создам массив code[10000], который заполню ими (реальными машинными кодами, а не виртуальными). Как туда передать управление? Или поставим вопрос по другому - каким еще способом можно написать на С форт задействуюя машинные коды? В таком варианте могут возникнуть трудности с адресацией.

_________________
Вадим.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Управление можно передать, сделав указатель на функцию и присваивая ему разные значения. Лобовое решение - сделать ассемблерную вставку с jmp на какой-то адрес, а адрес менять "вручную". Чтобы не было трудностей с адресацией, можно компилировать только относительные переходы (если есть такая возможность), или вести таблицу relocations (список адресов, где есть переходы куда-то), а потом добавлять ко всем адресам, указанным в таблице, начальный адрес массива.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ну вообще тогда уж Dragon Book :) Или Ахо, Сети, Ульман "Компиляторы. Принципы. Технологии. Инструменты". Еще помню интересную книгу Костельцева "Построение интерпретаторов и компиляторов", там тоже рассмотрены виртуальные машины.

С точки зрения освоения я как-то заметил, что удобнее делать упор на реализацию переходов, вызовов подпрограмм, загрузку непосредственных значений и работу с памятью. Эти куски ВМ принципиальны, а вот арифметика как раз вторична, поскольку реализуется достаточно просто. Так что увлечение арифметическими командами и пересылками регистр-регистр может кончиться некоторым "пробуксовыванием" на более сложных кусках кода.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 05, 2006 14:43 
Не в сети

Зарегистрирован: Вт окт 03, 2006 11:36
Сообщения: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
kufal писал(а):
сейчас работаю на твоим процессором и операционкой - в конце недели думаю что версия появится
могу предложить реализацию forth на tasm для Dos (или вообщее без ОС) в исходниках., если конечно интересно


Спасибо за предложение. Но для Dos на ассемблере я себе давным давно сам делал и исходники остались. Я даже с Барановым и Ноздруновым встречался и на одной из конференций по форту был в Питере. Вот сейчас захотелось вспомнить те времена и освежить в памяти знания о форте. Ради удовольствия можно было бы сделать форт на КПК но без ассемблера для меня было непонятно как. Вот на исходники этого, хотябы часть с основной идеей, я бы взглянул.

_________________
Вадим.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вставлю и свои пять копеек 8)
Возьми и посмотри на eForth - там около 30 приметивов нужно реализовать, все остальное идет уже на уровне форта - кстати самый широкопортируемый форт 8) Ссылочку сразу не дам, но через гугл ищется легко ;)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 05, 2006 15:45 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
kufal писал(а):
могу предложить реализацию forth на tasm для Dos (или вообщее без ОС) в


Без ОС, к файлам доступ есть?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 05, 2006 16:09 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
LV писал(а):
Мне все-таки интересно как фактически на С сделать форт.


Лучше всего http://devbiol.zoo.uwo.ca/~kvt/relf01.zip

Есть еще:
http://pfe.sourceforge.net/
http://ficl.sourceforge.net/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 06, 2006 00:30 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
kufal писал(а):
за исключением некоторый моментов реализации

Меня, например, в основном это и интересует в исходниках!
Как сделать, чтоб исходник был простым и понятным, а реализация маленькая и быстрая!;)

_________________
With best wishes, in4.


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

Зарегистрирован: Вт окт 03, 2006 11:36
Сообщения: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Mihail писал(а):


Спасибо за ссылки. Очень интересно было познакомиться с relf. А вот за Ficl - отдельное огромное спасибо! Вот чего не хватало для полного счаться и что подсознательно где-то в голове крутилось, но никак не оформлялось в понятную мысль. Идея использования форта как виртуальную машину в параллельном процессе, с которым обычное windows-приложение обменивается информацией - просто отличная. Вот именно такой подход мне нужен в одном деле. И реализация отличная.

_________________
Вадим.


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

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


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

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


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

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