Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вс май 26, 2019 14:00

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Моя система(_KROL)
Автор Сообщение
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
REFILL , если мне не изменяет память, просто перезагружает исходный код в буфер.
Где здесь рекурсию можно впихнуть?
Сообщение Добавлено: Ср май 22, 2019 17:15
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Ну, у меня будет INCLUDED и SAVE так что всегда будет можно что-то дополнить.
Правда ещё не очень понятно с рекурсией (тут это слово уже уместно :) ) при загрузке файлов в refill...
Ладно, как ещё что не будет понятно, напишу. Спасибо!
Сообщение Добавлено: Вт май 21, 2019 19:18
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Да. Только не рекурсивно конечно, что-то ты тут это умное словечко не в тему вставил. Поле VOC-LINK нужно чтобы при FORGET обойти все словари и все их укоротить. Корректно укоротить. А те, что полностью за-FORGET-ились вообще убрать. Т.е. обойти все словари, какие-то не тронуть, какие-то укоротить, какие-то убрать вообще.

Да почему бы ему не применяться. Он очень удобен FORGET. Слово MARKER придумано только потому, что не во всяком Форте можно забывать имея только один критерий - адрес HERE по который нужно все обрезать. ANS создавался типа как универсальный стандарт и в нем было оставлено только то, что реализуемо всегда. Но если в твоем Форте FORGET реализуем почему бы не сделать его в дополнение к MARKER ? Который как раз неудобен.
Сообщение Добавлено: Вт май 21, 2019 19:09
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Т.е. FORGET рекурсивно урезает все словари до какого-то слова? И это получается доступно лишь из-за того, что слова компилируются друг за другом.
p.s. А FORGET вообще сейчас применяется?
Сообщение Добавлено: Вт май 21, 2019 19:01
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Уточнение выше в посте сделал важное, перечитай.

Про FORGET я напишу чуть опосля, надо собраться с мыслями как изложить.
Сообщение Добавлено: Вт май 21, 2019 18:54
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Ахха, до меня дошло, что это за "Учкудук-три пробела")
Код:
"  \r" -- псевдо-последнее слово и часть словаря (никогда не находится)
ссылается на последнее слово словаря.

Кстати, если так пошло, расскажите, пожалуйста, а как тогда FORGET в FIG-е работает?
А то я это слово давно не понимаю... (когда несколько словарей)
Сообщение Добавлено: Вт май 21, 2019 18:54
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
VOC-LINK нужен для того, чтобы слова искать и в родительских словарях.
Не так. VOC-LINK не используется при поиске никак. VOC-LINK просто сшивает словари в односвязный список. Не в порядке наследования родитель-дитя, а в порядке создания словарей. VOC-LINK нужен только для FORGET.

Хотя я еще использовал это слово (в опубликованном в этом топике Форте) для перехода >NAME от поля кода к полю имени, т.е. через это поле можно обойти все слова во всех словарях если зачем-то это нужно. Но можно так написать Форт, что такое будет никогда не нужно и VOC-LINK понадобится только для FORGET.

Словари-родители в ФИГ-е обходятся так. Первое слово словаря указывает на
DD 0A0202083h
DD адрес_последнего_слова_словаря
родительского словаря. И поиск не будет прерываться. Он найдет последовательно
...
второе слово словаря BLABLA
первое слово словаря BLABLA
слово из трех пробелов (никогда не сработает как найденное)
последнее слово словаря, что был родителем словаря BLABLA
...
первое слово словаря, что был родителем словаря BLABLA
слово из трех пробелов (никогда не сработает как найденное)
последнее слово словаря FORTH
...
первое слово словаря FORTH
Сообщение Добавлено: Вт май 21, 2019 18:48
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Ethereal писал(а):
Может ты чего-то небывалое задумал и хочешь сделать так как хочешь сделать.
Из небывалого я подумываю сделать (e)di указывающим на here =)
Тогда на архитектуре x86 будет чуток быстрее кое-что компилировать, но теряется совместимость -_-
Сообщение Добавлено: Вт май 21, 2019 18:47
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Ethereal писал(а):
Они одинаковые. Пусть ты создал словарь BLABLA. Тогда первое слово в нем будет иметь LFA указывающий на 0A0202083 словаря-родителя. А сам словарь BLABLA будет иметь
DD 0A0202083h
DD адрес_последнего_слова_словаря_BLABLA
DD адрес_такого-же_поля_в_словаре_созданном_предпоследним

Всё, я решил. У меня и так конец цепочки 0, так будет и тут.
Как я понял,
LATEST @ указывает на поле LAST словаря, а
VOC-LINK нужен для того, чтобы слова искать и в родительских словарях.
Сообщение Добавлено: Вт май 21, 2019 18:35
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Ethereal писал(а):
Но только не на сам словарь, а на словарь-родитель, е мое. Это стиль FIG, Если хочешь чтобы при поиске по словарю обходило только сам словарь, то первое слово словаря полем связи должно иметь ноль. Это стиль Forth-79.

И очень правильный подход, кстати. Стек словарей - это уже из серии "сунем стек везде, а там оно как-нибудь само все устроится".
Сообщение Добавлено: Вт май 21, 2019 18:31
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
p.s. И должно ли поле связи слов словаря указывать в конце на сам словарь?
Если хочешь чтобы при поиске по словарю обходило также словари-родители, то да. Но только не на сам словарь, а на словарь-родитель, е мое. Это стиль FIG, Если хочешь чтобы при поиске по словарю обходило только сам словарь, то первое слово словаря полем связи должно иметь ноль. Это стиль Forth-79. Ну а в Forth-83 и ANS-Forth порядок обхода уже формируется в стеке словарей и там опять таки первое слово словаря полем связи должно иметь ноль.

Хотя к чему подобные вопросы должно, не должно. Может ты чего-то небывалое задумал и хочешь сделать так как хочешь сделать. Поэтому не должно или не должно, а как ты считаешь нужным так и должно.
Сообщение Добавлено: Вт май 21, 2019 18:28
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Они одинаковые. Пусть ты создал словарь BLABLA. Тогда первое слово в нем будет иметь LFA указывающий на 0A0202083 словаря-родителя. А сам словарь BLABLA будет иметь
DD 0A0202083h
DD адрес_последнего_слова_словаря_BLABLA
DD адрес_такого-же_поля_в_словаре_созданном_предпоследним
Сообщение Добавлено: Вт май 21, 2019 18:22
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
У меня должно примерно линковаться следующим образом:
Код:
0<-forth<-abc<-voc1<-...
                ^-some1<-some2

или по другому?
p.s. И должно ли поле связи слов словаря указывать в конце на сам словарь?
Сообщение Добавлено: Вт май 21, 2019 18:15
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Ethereal писал(а):
HEX

: VOCABULARY
<BUILDS
A0202083 ,
CURRENT @ CELL- ,
HERE VOC-LINK @ , VOC-LINK !
IMMEDIATE
DOES>
CELL+ CONTEXT !
;
Ethereal писал(а):
DD DoDOES
DD DoVOC
DD 0A0202083h
DD LAST_NAME
У меня такое чувство, что тут немного разные порядки хранения данных...

Я вообще хотел сделать стек контекста, но видно мне пока и достаточно того, как реализовано в твоём форте (я что-то про него забыл).
Сообщение Добавлено: Вт май 21, 2019 17:37
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
Как я понял, нельзя ссылаться в CFA на код на форте, так как никакого нативного CALL нету. Так что, реализовывать примитив (VOCABULARY) на ассемблере?
Как-то логика твоей мысли ускользает. Ячейка CFA может ссылаться на (содержать адрес)
Код:
DoCOLON:   sub   ebp, 4
      mov   [ebp], esi
      lea   esi, [eax+4]
      NEXT$
тогда сразу после CFA (т.е. в PFA) располагается шитый код.

CFA может ссылаться на
Код:
DoDOES:      sub   ebp, 4
      mov   [ebp], esi
      mov   esi, [eax+4]
      push   ebx
      lea   ebx, [eax+8]
      NEXT$
тогда сразу после CFA (в первой ячейке PFA) располагается адрес где находится шитый код.

Кстати именно из-за наличия этого адреса в первой ячейке PFA при КШК требуется не CREATE , а отдельное слово <BUILDS. CREATE ведь создает слово, которое возращает адрес совершенно пустого в момент создания PFA. А <BUILDS одну ячейку в PFA под дело занимает. Под то дело, что надо-же куда-то положить адрес, который в ПШК вмонтирован в инструкцию call.

Так-что от того, что в КШК нету call-а неизбежность ассемблерности чего-либо никак не вытекает.
Сообщение Добавлено: Вт май 21, 2019 08:46

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


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