Forth
http://fforum.winglion.ru/

Сохранение и загрузка скомпилированного словаря
http://fforum.winglion.ru/viewtopic.php?f=24&t=2206
Страница 1 из 1

Автор:  MrYuran [ Чт июл 16, 2009 21:15 ]
Заголовок сообщения:  Сохранение и загрузка скомпилированного словаря

Возник вопрос в процессе вялого колупания в gforth.
Вот наколупал я , допустим, десяток-другой слов, поигрался, проверил и решил сохранить.
А как?
Исходников-то нету.
Как можно сохранить уже скомпилированный словарь, а потом загрузить его обратно?
Предположим, что колупал я в свой локальный словарь My_Voc.

Ещё вопрос.
Код:
41 constant star-symbol  ok
: star star-symbol emit ; redefined star   ok
star ) ok
42 constant star-symbol redefined star-symbol   ok
star ) ok
: star star-symbol emit ; redefined star   ok
star * ok

Как видим, переопределение константы star-symbol никак не повлияло на уже скомпилированное слово star.
Как написать так, чтобы переопределение константы отражалось на словах, которые её используют без повторной перекомпиляции?

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

MrYuran писал(а):
Как видим, переопределение константы star-symbol никак не повлияло на уже скомпилированное слово star.

Есстественно, ведь адрес уже скопилирован.
MrYuran писал(а):
Как написать так, чтобы переопределение константы отражалось на словах, которые её используют без повторной перекомпиляции?

Словарь просматривается с конца. Используй вектора.

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

обычно, сохранение наработанной системы производится с помощью слова SAVE
можно ли отдельно сохранять словари или куски кода в gforth я не знаю (я знаю только одну такую систему, позволявшую так поступать SMAL32 )

если вам надо какой-то кусок кода переопределять, используйте векторизированные слова:

VECT sample

: first ." first sample" ;

' first TO sample

sample

: second ." second sample" ;

' second TO sample

sample

Еще, посмотрите на DOER MAKE механизм (описан в Thinking forth у Броуди), а так же scattered colon words от Гасаненко

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