Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср дек 07, 2022 21:31

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 104 ]  На страницу 1, 2, 3, 4, 5 ... 7  След.
Автор Сообщение
 Заголовок сообщения: Общие вопросы по SP-Forth и др. общие вопросы
СообщениеДобавлено: Ср ноя 08, 2006 19:55 
Не в сети
Аватара пользователя

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
1. Можно ли и если да, то как, при сохранении с помощью SAVE исключить сохранение какого-либо словаря в конечный бинарник ?
2. Можно ли при исключить какого-либо слово из словаря SP-Forth? Как я понимаю, SP-Forth компилит слова сразу в машинный код, т.е. после компиляции слова, другие слова, которые использовались при создании этого слова , ему уже не нужны.
3. Можно ли полностью изменить код (НЕ добавить к слову) какого-либо слова ?
4. Что означает слово IMMEDIATE ? Читал про него, но ни фига не понял, что оно конкретно делает. Желательно к описанию привести пример слова (его код), которое не работает без IMMEDIATE.
5. Можно ли узнать названия всех словарей (их список) ?
6. Можно ли узнать название текущего словаря ?
7. Существуют ли исходники на SP-Forth (не на самом форте), на котором изначально компилировался SP-Forth и уже потом с помощью этого скомпилированного SP-Forth'а компилились другие его версии?
8. Можно ли и если да, то как, откомпилировать SP-Forth для 64-битной ОС (для Windows XP x64, Server x64 или Vista x64) ?
9. Как компилировать слова для системы с другой разрядностью (пересекается с предыдущим вопросом) ?
10. Почему при компиляции SP-Forth в конечный бинарник не включаются слова для ассемблера? В начале файла spf.f есть фраза S" lib\ext\spf-asm.f" INCLUDED. Каким же образом слова, используемые из этого spf-asm.f не оказываются в конечном бинарнике ? Возможно этот вопрос пересекается с каким-то из вопросов выше.


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

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

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

unreal666 писал(а):
2. Можно ли при исключить какого-либо слово из словаря SP-Forth? Как я понимаю, SP-Forth компилит слова сразу в машинный код, т.е. после компиляции слова, другие слова, которые использовались при создании этого слова , ему уже не нужны.

Ну, это не совсем так, на самом низком уровне это так, а в более выскоуровневых словах всеравно идут callы на другие слова.

unreal666 писал(а):
3. Можно ли полностью изменить код (НЕ добавить к слову) какого-либо слова ?

есть два варианта. один называется Replace - поищи по дистру
второй - изменить слово в исходниках спф-а и пересобрать систему.
третий - создать слово с таким же именем( кстати самый безопасный ) и все вышестоящие слова будут использовать уже его, при этом ядро системы будет работать по-старому.

unreal666 писал(а):
4. Что означает слово IMMEDIATE ? Читал про него, но ни фига не понял, что оно конкретно делает. Желательно к описанию привести пример слова (его код), которое не работает без IMMEDIATE.

Классическая форт-система, это даже не совсем язык, а скорее среда. Можно, например, сравнить его с ДОС системой. Аналогом файла - будет слово, аналогом каталога - словарь. Отличие в том, что все слова могут быть исполнены. Но еще форт умеет собирать новые слова из старых, для этого у него предусмотрено два режима работы: исполнение и компиляция. Во время компиляции слова ищутся в словаре и их адреса добавляются к коду слова. Но тут возникает необходимость, например, компиляции управляющих структур, и тут просто добавить адрес не получится - нужно выполнить более сложное дело ( в форте все слова равноправны), так вот, чтобы можно было выполнить сложное действие во время сборки слова, такое слово-действие должно уметь исполняться во время компиляции. Так вот слова с признаком Immediate исполняется в любом из режимов работы ( при интерпретации и при компиляции ).

unreal666 писал(а):
5. Можно ли узнать названия всех словарей (их список) ?

Базовый словарь называется FORTH остальных в системе после запуска нет.
( к сожалению )

unreal666 писал(а):
6. Можно ли узнать название текущего словаря ?

называется слово ORDER - выдает как текущий так и контекстные словари

unreal666 писал(а):
7. Существуют ли исходники на SP-Forth (не на самом форте), на котором изначально компилировался SP-Forth и уже потом с помощью этого скомпилированного SP-Forth'а компилились другие его версии?

Исходинки СПФ (первой вин версии) были сделаны на другом форте WIN32FORTH называется.
Найти возможно, но стоит ли?
Если хочешь копаться в исходниках возьми версию 3.75 она проще 4-того за счет того, что там нет оптимизатора.

unreal666 писал(а):
8. Можно ли и если да, то как, откомпилировать SP-Forth для 64-битной ОС (для Windows XP x64, Server x64 или Vista x64) ?

Пока еще нет, но этот вопрос обсуждается, надеюсь в скором времени такая версия появится 8)

unreal666 писал(а):
9. Как компилировать слова для системы с другой разрядностью (пересекается с предыдущим вопросом) ?

вопрос не очень простой. Вообще проблем быть особых не должно - то есть 32 битные программы должны будут без проблем собираться на 64битной версии. Но как оно будет, пока что не ясно.

unreal666 писал(а):
10. Почему при компиляции SP-Forth в конечный бинарник не включаются слова для ассемблера? В начале файла spf.f есть фраза S" lib\ext\spf-asm.f" INCLUDED. Каким же образом слова, используемые из этого spf-asm.f не оказываются в конечном бинарнике ? Возможно этот вопрос пересекается с каким-то из вопросов выше.

Тут надо разбираться в целевом компиляторе, а это не есть очень просто. Лучше этот вопрос отложить на потом. А слова и не должны включаться, так как подключается ассемблер до того, как начинается сборка новой версии спф.


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
[quote="mOleg]
Если хочешь копаться в исходниках возьми версию 3.75 она проще 4-того за счет того, что там нет оптимизатора.
[/quote]

Без исходников не разобраться. Можно сопоставить с 3.75 .
Вообще: http://fforum.winglion.ru/viewtopic.php ... ight=#2736


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Общие вопросы по SP-Forth и др. общие вопросы
СообщениеДобавлено: Ср ноя 08, 2006 21:02 
Не в сети

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


Это просто установка соответствующего флага в последней
словарной статье. Его учитывает программа INTERPRET.
Слово будет выполнено вне зависимости то значения переменной STATE .
Слова с признаком IMMEDIATE играют роль директивы, работая
во время режима компиляции.
Самый простой пример - знак комментария
Код:
: \ SOURCE NIP >IN ! ; IMMEDIATE


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

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
mOleg писал(а):
есть два варианта. один называется Replace - поищи по дистру

Нашел в devel\~micro\lib\_oldlib\replace.f слова REPLACE; и REPLACE: . Это оно?
mOleg писал(а):
второй - изменить слово в исходниках спф-а и пересобрать систему.

Так исходники компилятся с помощью JPF375C.EXE. А слова из этого exe-шника таким образом не переделаешь.
mOleg писал(а):
третий - создать слово с таким же именем( кстати самый безопасный ) и все вышестоящие слова будут использовать уже его, при этом ядро системы будет работать по-старому.

Замусоривается словарь.
И в придачу к этому еще вопрос. Как при создании слова с таким е именем, обратиться к старому слову?
mOleg писал(а):
Базовый словарь называется FORTH остальных в системе после запуска нет.
( к сожалению )

А в СПФ откоплиляном с GUI (samples\win\spfwc) разве нет других словарей? Ну и вообще все-таки интересно знать, как это можно реализовать.
mOleg писал(а):
Так вот слова с признаком Immediate исполняется в любом из режимов работы ( при интерпретации и при компиляции ).

Можно все-таки пример такого слова с кодом.
mOleg писал(а):
А слова и не должны включаться, так как подключается ассемблер до того, как начинается сборка новой версии спф.

Так на сайте же написано:
Цитата:
Слово SAVE ( a u -- ) сохраняет всю форт-систему, включая все словарные структуры (кроме временных!) в исполняемый модуль путь к которому задаётся строкой a u.

Т.е. при SAVE, по идее, должны сохраняться все слова и словари, которые использовались в исходниках. Что не так в этом утверждении ?
mOleg писал(а):
Вообще проблем быть особых не должно - то есть 32 битные программы должны будут без проблем собираться на 64битной версии.

Тот же nnCron откоплинен на SP-Forth (только не знаю на какой версии) и у него даже на 32-битных ОС с 64-битными процессорами (на Athlon 64 и Intel 64-бит) есть глюки. Значит где-то глюк с битностью даже на 32-битных ОС, но 64-битных процессорах.
mOleg писал(а):
Если хочешь копаться в исходниках возьми версию 3.75 она проще 4-того за счет того, что там нет оптимизатора.

Просто мне нужно знание самой организации Форта (и конктерно SP-Forth). Т.е. как, например, код ядра той же версии 3.75 соответствует коду на C++ или Асме. Так будет понятнее дл изучения работы форта.
Да и версии ниже 4 у меня вообще не запускаются. ОС - Win Server Ent 2003.
mOleg писал(а):
Ну, это не совсем так, на самом низком уровне это так, а в более выскоуровневых словах всеравно идут callы на другие слова.

А что считается низким и высоким уровнем? Тое желательно пример слова, который откомпилится с CALL-вызовами.
mOleg писал(а):
Вообще проблем быть особых не должно - то есть 32 битные программы должны будут без проблем собираться на 64битной версии.

А если мне надо собрать для 16-битной системы?


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

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Mihail
Mihail писал(а):
: \ SOURCE NIP >IN ! ; IMMEDIATE

А что будет, если это слово будет без IMMEDIATE ?

Создал просто слова
: | SOURCE NIP >IN ! ;
и
: || SOURCE NIP >IN ! ; IMMEDIATE

Что-то разницы в их работе не заметил.

mOleg
Чего-то странно работает слово DUP, когда стек пустой. Что оно там ложит на стек, когда он пустой ?

_________________
Win2003 Ent R2
ASUS A7V266-E; Athlon XP 2000+; 512Mb; HDD: 2x120+15 Gb; GF 3 Ti2


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
IMMEDIATE слова выполняются в момент компиляции.
Код:
: a | 2 .
;
: b || 3 .
;

Запустите a и b и сравните результат.

DUP берёт что попадётся из под дна стека. багофича.. на самом деле хуже когда в программе DROP залазит не туда куда следует.

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Еще вопрос.
Как перенаправить выходные данные не на консоль, а в файл? Для примера сохранить результат слова WORDS в файл.

_________________
Win2003 Ent R2
ASUS A7V266-E; Athlon XP 2000+; 512Mb; HDD: 2x120+15 Gb; GF 3 Ti2


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Общие вопросы по SP-Forth и др. общие вопросы
СообщениеДобавлено: Ср ноя 08, 2006 21:57 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
unreal666 писал(а):
1. Можно ли и если да, то как, при сохранении с помощью SAVE исключить сохранение какого-либо словаря в конечный бинарник ?

уже ответили. уточню - см. слова TEMP-WORDLIST FREE-WORDLIST
unreal666 писал(а):
2. Можно ли при исключить какого-либо слово из словаря SP-Forth? Как я понимаю, SP-Forth компилит слова сразу в машинный код, т.е. после компиляции слова, другие слова, которые использовались при создании этого слова , ему уже не нужны.

Можно, если кто-то напишет соответствующую либу ;) т.е. принципиальных ограничений нет. Единственно что вы тогда целиком и полностью будете нести ответственность за S" слово" EVALUATE итп динамики исполнения.
Цитата:
5. Можно ли узнать названия всех словарей (их список) ?

Вы можете перебрать все слова из интересуещего списка слов и проверять у них признак ?VOC. Альтернативно - переопределите слово WORDLIST так чтобы оно где-нибудь сохраняло инфу о созданных словарях.

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5061
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
unreal666 писал(а):
mOleg писал(а):
есть два варианта. один называется Replace - поищи по дистру
Нашел в devel\~micro\lib\_oldlib\replace.f слова REPLACE; и REPLACE: . Это оно?

Да, оно

unreal666 писал(а):
mOleg писал(а):
второй - изменить слово в исходниках спф-а и пересобрать систему.

Так исходники компилятся с помощью JPF375C.EXE. А слова из этого exe-шника таким образом не переделаешь.

да

unreal666 писал(а):
mOleg писал(а):
третий - создать слово с таким же именем( кстати самый безопасный ) и все вышестоящие слова будут использовать уже его, при этом ядро системы будет работать по-старому.

Замусоривается словарь.
И в придачу к этому еще вопрос. Как при создании слова с таким е именем, обратиться к старому слову?

словарь как-бы не замусоривается, так как имя остается то же. А замусоривается память - но это тоже сомнительно, особенно, если слово используется в другом месте.
А о том, чтобы вызвать старое слово стоит заранее позаботиться, например, таким образом:
: oldName name ;

: name ... ;

unreal666 писал(а):
mOleg писал(а):
Базовый словарь называется FORTH остальных в системе после запуска нет.
( к сожалению )

А в СПФ откоплиляном с GUI (samples\win\spfwc) разве нет других словарей? Ну и вообще все-таки интересно знать, как это можно реализовать.

там много чего есть, но это просто пример того, чего можно добиться от спфа. Сам спф называется SPF4.EXE
и работает в консоли.

unreal666 писал(а):
Ну и вообще все-таки интересно знать, как это можно реализовать.

Не совсем понял, что это. Можно повторить вопрос?

unreal666 писал(а):
mOleg писал(а):
Так вот слова с признаком Immediate исполняется в любом из режимов работы ( при интерпретации и при компиляции ).

Можно все-таки пример такого слова с кодом.

ну давай побалуемся 8)

: IF [COMPILE] IF ." я начал компилировать конструкцию IF - ELSE - THEN " ; IMMEDIATE

: test IF ." true " ELSE ." false" THEN ;

test

8*)

Итак, слово [COMPILE] отменяет работу слова IMMEDIATE 8) и говорит, что следующее за ним слово обязательно должно скомпилироваться в код, как есть, вне зависимости от флага.
Дальше мы определяем новое слово IF с немного другим кодом, при этом используем старый вариант IFа и чуточку от себя добавляем 8) Слово IMMEDIATE метит слово, как слово немедленного исполнения, то есть внутри : .. ; будет исполняться.

unreal666 писал(а):
mOleg писал(а):
А слова и не должны включаться, так как подключается ассемблер до того, как начинается сборка новой версии спф.

Так на сайте же написано:
Цитата:
Слово SAVE ( a u -- ) сохраняет всю форт-систему, включая все словарные структуры (кроме временных!) в исполняемый модуль путь к которому задаётся строкой a u.

вот в хипе и хранятся временные структуры(по крайней мере часть их).

unreal666 писал(а):
mOleg писал(а):
Вообще проблем быть особых не должно - то есть 32 битные программы должны будут без проблем собираться на 64битной версии.

Тот же nnCron откоплинен на SP-Forth (только не знаю на какой версии) и у него даже на 32-битных ОС с 64-битными процессорами (на Athlon 64 и Intel 64-бит) есть глюки. Значит где-то глюк с битностью даже на 32-битных ОС, но 64-битных процессорах.

У меня нет 64 битного проца. Так что сказать ничего в этом плане толкового не могу.


unreal666 писал(а):
mOleg писал(а):
Если хочешь копаться в исходниках возьми версию 3.75 она проще 4-того за счет того, что там нет оптимизатора.

Просто мне нужно знание самой организации Форта (и конктерно SP-Forth). Т.е. как, например, код ядра той же версии 3.75 соответствует коду на C++ или Асме. Так будет понятнее дл изучения работы форта.
Да и версии ниже 4 у меня вообще не запускаются. ОС - Win Server Ent 2003.

Хорошие форт-системы пишутся на фортах 8)
Если хочешь пример портабельного форта написанного не на форте, поиши eForth Ting -а кажется.
Всего 30 слов на ассемблере определено, маленький и простой( к тому же классический!!!) форт.
Не ведись на всякие там retroforth и прочие вариации.

unreal666 писал(а):
mOleg писал(а):
Ну, это не совсем так, на самом низком уровне это так, а в более выскоуровневых словах всеравно идут callы на другие слова.

А что считается низким и высоким уровнем? Тое желательно пример слова, который откомпилится с CALL-вызовами.

любое более-менее сложное слово будет содержать вызовы других слов.
Я имел ввиду слова, которые используют слова, которые используют слова и т.д.
То есть уровень вложенности слов. В других ЯП то же самое: функции используют функиции, которые используют функции?

unreal666 писал(а):
mOleg писал(а):
Вообще проблем быть особых не должно - то есть 32 битные программы должны будут без проблем собираться на 64битной версии.

А если мне надо собрать для 16-битной системы?

То придется искать 16битный форт 8) Так будет лучше.
Кстати очень советую infoForth, правда не знаю, можно ли его найти в сети, так как распространялся, как комерческая программа.


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
unreal666 писал(а):
mOleg писал(а):
есть два варианта. один называется Replace - поищи по дистру

Нашел в devel\~micro\lib\_oldlib\replace.f слова REPLACE; и REPLACE: . Это оно?

можно lib/ext/patch.f
Цитата:
mOleg писал(а):
второй - изменить слово в исходниках спф-а и пересобрать систему.

Так исходники компилятся с помощью JPF375C.EXE. А слова из этого exe-шника таким образом не переделаешь.

Вы можете компилировать самим spf-ом предварительно модифицировав что надо. Но лучше обьясните для чего вам это понадобилось.
Цитата:
mOleg писал(а):
третий - создать слово с таким же именем( кстати самый безопасный ) и все вышестоящие слова будут использовать уже его, при этом ядро системы будет работать по-старому.

Замусоривается словарь.
И в придачу к этому еще вопрос. Как при создании слова с таким е именем, обратиться к старому слову?

если вы напишите
Код:
: BASE bla-bla ;

то закроете BASE для всех последующих слов. Найти предыдущий BASE вы можете проходом по словарю, остановившись на втором слове. Или предварительно запомнив xt старого BASE перед переопределинем.
Если же вы модифицируете (patch'ите) слово, то там по принципу действия в слово вкомпиливается JMP.. Конечно исхитрится и обойти это можно - но опять - лучше расскажите что конкретно вы хотите сделать.
Цитата:
mOleg писал(а):
А слова и не должны включаться, так как подключается ассемблер до того, как начинается сборка новой версии спф.

Так на сайте же написано:
Цитата:
Слово SAVE ( a u -- ) сохраняет всю форт-систему, включая все словарные структуры (кроме временных!) в исполняемый модуль путь к которому задаётся строкой a u.

Т.е. при SAVE, по идее, должны сохраняться все слова и словари, которые использовались в исходниках. Что не так в этом утверждении ?

Там работает не тот SAVE.
Там работает целевой компилятор. asm подключается в него. А он уже компилирует исходники в готовую систему. См. строку 56 в src/spf.f и обратите внимание что spf-asm.f включается раньше, т.е. он не попадает в образ.

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
unreal666 писал(а):
Еще вопрос.
Как перенаправить выходные данные не на консоль, а в файл? Для примера сохранить результат слова WORDS в файл.

Логическая цепочка : вывод в консоль - TYPE - а он ведь вектор!
и
Код:
' my-to-file TO TYPE WORDS ' TYPE1 TO TYPE

my-to-file остаётся на д/з

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 08, 2006 22:44 
Цитата:
Как перенаправить выходные данные не на консоль, а в файл? Для примера сохранить результат слова WORDS в файл.

Если просто нужно вывести список слов в файл, то проще воспользоваться STARTLOG. Для общего случая, конечно нужно перенаправлять...


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

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

spf4exe WORDS BYE >wordlist


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

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
yGREK писал(а):
уже ответили. уточню - см. слова TEMP-WORDLIST FREE-WORDLIST

Это только для словарей, созданных мной. А если я создаю прогу, которая создается на Форте, словари которого при создании конечного бинарника, мне не будут нужны. Для примера, захочу откомпилировать все слова СПФ в другой словарь, а оригинальный выбросить. Мало ли что :)
mOleg писал(а):
словарь как-бы не замусоривается, так как имя остается то же. А замусоривается память - но это тоже сомнительно, особенно, если слово используется в другом месте.

Я как раз и подразумевал замусоривание конечного кода, т.е. бинарника. Мне надо, чтобы была возможность полностью изменять код уже внедренного в компилятор слова.
mOleg писал(а):
То придется искать 16битный форт

А может я хочу 16-битный SP-Forth ? :) Да и неинтересно это. Интереснее самому собрать x-битный Форт на основе уже существующего Форта.
yGREK писал(а):
можно lib/ext/patch.f

Цитата:
REPLACE-WORD ( by-xt what-xt )

Это не интересно. Происходит обычный JMP. А для него тоже надо создавать слово, соответственно словарь (и конечный код) замусориваются. А если я захочу передалать так много слов? Не многовато ли лишнего кода получится?
Вообще это по идее это нетривиальная задача, т.к. если новый код больше начального, то надо будет в словаре сдвигать все слова, выше данного, и изменять точки входа на эти слова.
Кстати это слово в nnCron так и называется JMP, что понятнеее.
yGREK писал(а):
См. строку 56 в src/spf.f и обратите внимание что spf-asm.f включается раньше, т.е. он не попадает в образ.

В строке 56 у меня находится
Код:
\ в начале команда CALL подпрограммы инициализации.

_________________
Win2003 Ent R2
ASUS A7V266-E; Athlon XP 2000+; 512Mb; HDD: 2x120+15 Gb; GF 3 Ti2


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

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


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

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


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

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