Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 14:24

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 222 ]  На страницу 1, 2, 3, 4, 5 ... 15  След.
Автор Сообщение
 Заголовок сообщения: минимальный форт-транслятор
СообщениеДобавлено: Вс фев 14, 2010 19:05 
Не в сети
Moderator
Moderator
Аватара пользователя

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

сразу оговорюсь о том, от чего можно отказаться в начале:

1) поддержка и обработка исключений (во-первых штука не тривиальная в реализации, во вторых дстаточно просто "навешивается поверх"
2) стек контекста (без него можно вообще обойтись)
3) без VALUE переменных и VECT переменных
4) без многопоточности и локальных областей данных
5) без DO LOOP, и практически вообще без циклов точнее нужен BEGIN WHILE REPEAT
что еще?
в принципе не все арифметические и тем более логические операции нужны

какие у кого мысли на этот счет есть?

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


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
мысль 1.
На каком железе?
- 80x86
- МЛФП (мой-любимый-форт-процессор)
- Б3-34 (калькулятор такой, программируемый, времен СССР)
- инопланетная железка, которая упадет на Землю через 7 лет после написания транслятора для нее
мысль 2.
Что является критерием минимальности?
- Объем кода в битах,
- объем исходника в килобайтах,
- количество использованных слов в штуках
- или надо использовать другой какой бульбометр, измеряющий силу ветра на Марсе?
Мысль 3.
Что является критерием "сделанности"?
А то ведь можно сварганить прогу, которая из HEX-кодов собирает файл,
назвать его "вперед-трансплятором" и заявить, что это есть не колобок, съевший лису, а натуральный пирожок с мясом.

п.с. чтобы не быть совсем голословным: http://winglion.ru/forth/pc_forth.zip
исходник на асме (44Kb) -> результат com-файл размером 4.3Kb
к нему исходник на форте (9.9Kb) который превращает сие творение в натуральный "СвойФорт"
со следующими данными:
разрядность - 16
стандарт - F83 (с некоторыми исключениями)
работает под DOS, WIN98, и даже в WINXP
о прерываниях/исключениях и т.п. ничего не знает.
про многозадачность не слышал.
попытка завести сие творение в каком-нибудь графическом режиме была неудачна ввиду отсутствия опыта работы в графических виндозных режимах.

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


Последний раз редактировалось WingLion Вс фев 14, 2010 19:59, всего редактировалось 1 раз.

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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
WingLion писал(а):
мысль 1.
На каком железе?

на любом, допустим, на любом 16 разрядном процессоре и выше.

WingLion писал(а):
Что является критерием минимальности?

количество примитивов (в штуках) и, желательно объем кода (текста).

WingLion писал(а):
Что является критерием "сделанности"?

должен получится б\м обычный форт-транслятор, позволяющий компилировать код, понимать входной текст, иметь возможность расширяться.

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


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

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


16-разрядный форт-транслятор, представлен в предыдущем моем посте в этой теме.

mOleg писал(а):
количество примитивов (в штуках) и, желательно объем кода (текста).


Количество слов не посчитал ;( а объем исходника (на асме) 44Kb плюс к нему ~10Kb на форте.

mOleg писал(а):
должен получится б\м обычный форт-транслятор,


Что значит "б\м" - не понял.
Обычный форт-транслятор, полагаю, получился, ибо пользуюсь им с 2002-го года, когда сие было написано, и до сих пор.

mOleg писал(а):
позволяющий компилировать код, понимать входной текст, иметь возможность расширяться.


Понимает входной текст, компилирует, расширяется... в пределах "разумного" для 16-битной версии.
При запуске файла forth.com берет файл forth.frt и интерпретирует его, в результате чего появляется не совсем обычное для форта текстовое окно с парой строк вверху и внизу, несущими информацию о режиме компиляции/исполнения, текущей системе счисления, ну и дифирамбы автору ;)

формально, "решением" задачи из первого поста темы является этот самый файл forth.com который уже содержит слово INTERPRET, которому и отдается на интерпретацию содержимое файла forth.frt. Можно и другой файл отдавать (его имя в конце исходника на асме задается). Сам INTERPRET написан формально на форте, а скомпилирован на асме через директивы dw

И только в файле forth.frt определяется некий "минимум", позволяющий работать в интерактивном режиме вводить текст с клавиатуры, интерпретировать его и т.д. и т.п.
Работа с файлами организована ближе к стандарту F94, чем F83 блоков нет,
есть OPEN-FILE, CLOSE-FILE, CREATE-FILE, READ-FILE, WRITE-FILE, SEEK-FILE, ?I/O ("обработчик ошибок" для файловых операций - по сути просто аборт в случае ошибки и продолжение, если нет)
несколько нестандартных слов типа
READ - читает файл целиком в указанную область памяти (имя файла - следующее слово из потока интерпретации)
SAVE - сохраняет указанную область памяти в файле (имя файла - следующее слово из потока интерпретации)

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


Последний раз редактировалось WingLion Вс фев 14, 2010 20:35, всего редактировалось 1 раз.

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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
WingLion писал(а):
Количество слов не посчитал ;( а объем исходника (на асме) 44Kb плюс к нему ~10Kb на форте.

дофига. вообще интересно бы уложиться где-то в 100 имен.

WingLion писал(а):
Что значит "б\м" - не понял.

более\менее обычный

WingLion писал(а):
Обычный форт-транслятор, полагаю, получился, ибо пользуюсь им с 2002-го года, когда сие было написано, и до сих пор.

вопрос не об обычном, коих хватает, а о минимальном (то есть вообще без излишеств).

WingLion писал(а):
Понимает входной текст, компилирует, расширяется... в пределах "разумного" для 16-битной версии.

кстати, разрядность особой роли не играет в данном случае.

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


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

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


Излишества формально, надо просто обрезать и посмотреть, что получится. Не знаю только, когда этим заниматься.

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


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Создать такой форт-транслятор очень легко - нужно взять обычный не минимальный форт-транслятор и исключать из него слова, которые можно выразить через другие. Этап, когда такая операция не получится, видимо, и будет минимум
:D :D


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

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

на первый взгляд это выглядит так 8)
а на второй уже не так ;)

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


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Ради интересу посчитал (вручную) в своем варианте количество слов "определенных на форте", но скомпилированных на ассемблере - 22 штуки.
+ 125 Слов на ассемблере. Из них некоторые являются клонами друг друга.
Тем не менее, формально получается, что INTERPRET работает уже при количестве слов ~150, из которых используются для INTERPRET явно не все.

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


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

Зарегистрирован: Пн окт 15, 2007 17:24
Сообщения: 164
Откуда: Бийск
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
mOleg писал(а):
вообще интересно бы уложиться где-то в 100 имен.

:) вот все в том же фиг-форте, описанном все у того же пресловутого, МакКейба примитивов (написанных на ассемблере) было, помнится, 35 штук, сколько высокоуровневых - не помню, но по исходникам Интерпрет"а (там приведенных, равно как и всех остальных слов) можно этот набор минимально необходимых получить.

_________________
And so forth ...


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

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

оно понятно, кстати, 35 таки излишество. Я имею ввиду, что по сути самому компилятору\транслятору не нужны слова: / ABS INVERT XOR и куча других, которые можно добавить позднее.

и потом есть хитрости. Например, можно вообще в начале забыть о словарях, т.е. не нужны ни CONTEXT ни CURRENT, ни слова работающие с ними.

с другой стороны, не логично отказываться от 5.2 Базовый обязательный набор примитивов
то есть 17 необходимых определений уже есть.

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


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

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
mOleg писал(а):
WingLion писал(а):
Что является критерием минимальности?

количество примитивов (в штуках) и, желательно объем кода (текста).


Ну в eforth 30 примитивов, и то не все нужны. Чем не базовый форт?
Ну написан на нечитаемом масме. Ну и что :lol:


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

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

речь ведь идет не о примитивах, а о общем количестве слов. Пусть хоть все 100 будут примитивами 8)

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


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

Зарегистрирован: Пн ноя 23, 2009 16:12
Сообщения: 64
Откуда: Київ, Івано-Франківськ
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
а работа с файлами должна входить в примитивы или это излишества? как тогда подключать .форт-файлы? (или библиотеки тоже излишества?)

mOleg писал(а):
в принципе не все арифметические и тем более логические операции нужны

про логические: должен быть только один NAND и все?=)


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
danbst писал(а):
а работа с файлами должна входить в примитивы или это излишества?

система может не работать с файлами (какие файлы на одиноком микроконтроллере?), может быть чтение канала ВВ.

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


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

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


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

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


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

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