Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
REFILL , если мне не изменяет память, просто перезагружает исходный код в буфер. Где здесь рекурсию можно впихнуть?
REFILL , если мне не изменяет память, просто перезагружает исходный код в буфер. Где здесь рекурсию можно впихнуть?
|
|
|
|
Добавлено: Ср май 22, 2019 17:15 |
|
|
|
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
Ну, у меня будет INCLUDED и SAVE так что всегда будет можно что-то дополнить. Правда ещё не очень понятно с рекурсией (тут это слово уже уместно ) при загрузке файлов в refill... Ладно, как ещё что не будет понятно, напишу. Спасибо!
Ну, у меня будет INCLUDED и SAVE так что всегда будет можно что-то дополнить. Правда ещё не очень понятно с рекурсией (тут это слово уже уместно :) ) при загрузке файлов в refill... Ладно, как ещё что не будет понятно, напишу. Спасибо!
|
|
|
|
Добавлено: Вт май 21, 2019 19:18 |
|
|
|
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
Да. Только не рекурсивно конечно, что-то ты тут это умное словечко не в тему вставил. Поле VOC-LINK нужно чтобы при FORGET обойти все словари и все их укоротить. Корректно укоротить. А те, что полностью за-FORGET-ились вообще убрать. Т.е. обойти все словари, какие-то не тронуть, какие-то укоротить, какие-то убрать вообще.
Да почему бы ему не применяться. Он очень удобен FORGET. Слово MARKER придумано только потому, что не во всяком Форте можно забывать имея только один критерий - адрес HERE по который нужно все обрезать. ANS создавался типа как универсальный стандарт и в нем было оставлено только то, что реализуемо всегда. Но если в твоем Форте FORGET реализуем почему бы не сделать его в дополнение к MARKER ? Который как раз неудобен.
Да. Только не рекурсивно конечно, что-то ты тут это умное словечко не в тему вставил. Поле VOC-LINK нужно чтобы при FORGET обойти все словари и все их укоротить. Корректно укоротить. А те, что полностью за-FORGET-ились вообще убрать. Т.е. обойти все словари, какие-то не тронуть, какие-то укоротить, какие-то убрать вообще.
Да почему бы ему не применяться. Он очень удобен FORGET. Слово MARKER придумано только потому, что не во всяком Форте можно забывать имея только один критерий - адрес HERE по который нужно все обрезать. ANS создавался типа как универсальный стандарт и в нем было оставлено только то, что реализуемо всегда. Но если в твоем Форте FORGET реализуем почему бы не сделать его в дополнение к MARKER ? Который как раз неудобен.
|
|
|
|
Добавлено: Вт май 21, 2019 19:09 |
|
|
|
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
Т.е. FORGET рекурсивно урезает все словари до какого-то слова? И это получается доступно лишь из-за того, что слова компилируются друг за другом. p.s. А FORGET вообще сейчас применяется?
Т.е. FORGET рекурсивно урезает все словари до какого-то слова? И это получается доступно лишь из-за того, что слова компилируются друг за другом. p.s. А FORGET вообще сейчас применяется?
|
|
|
|
Добавлено: Вт май 21, 2019 19:01 |
|
|
|
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
Уточнение выше в посте сделал важное, перечитай.
Про FORGET я напишу чуть опосля, надо собраться с мыслями как изложить.
Уточнение выше в посте сделал важное, перечитай.
Про FORGET я напишу чуть опосля, надо собраться с мыслями как изложить.
|
|
|
|
Добавлено: Вт май 21, 2019 18:54 |
|
|
|
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
Ахха, до меня дошло, что это за "Учкудук-три пробела") Код: " \r" -- псевдо-последнее слово и часть словаря (никогда не находится) ссылается на последнее слово словаря. Кстати, если так пошло, расскажите, пожалуйста, а как тогда FORGET в FIG-е работает? А то я это слово давно не понимаю... (когда несколько словарей)
Ахха, до меня дошло, что это за "Учкудук-три пробела") [code]" \r" -- псевдо-последнее слово и часть словаря (никогда не находится) ссылается на последнее слово словаря.[/code] Кстати, если так пошло, расскажите, пожалуйста, а как тогда 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
[quote="_KROL"]VOC-LINK нужен для того, чтобы слова искать и в родительских словарях.[/quote]Не так. 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 будет чуток быстрее кое-что компилировать, но теряется совместимость -_-
[quote="Ethereal"] Может ты чего-то небывалое задумал и хочешь сделать так как хочешь сделать.[/quote]Из небывалого я подумываю сделать (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 нужен для того, чтобы слова искать и в родительских словарях.
[quote="Ethereal"]Они одинаковые. Пусть ты создал словарь BLABLA. Тогда первое слово в нем будет иметь LFA указывающий на 0A0202083 словаря-родителя. А сам словарь BLABLA будет иметь DD 0A0202083h DD адрес_последнего_слова_словаря_BLABLA DD адрес_такого-же_поля_в_словаре_созданном_предпоследним[/quote] Всё, я решил. У меня и так конец цепочки 0, так будет и тут. Как я понял, LATEST @ указывает на поле LAST словаря, а VOC-LINK нужен для того, чтобы слова искать и в родительских словарях.
|
|
|
|
Добавлено: Вт май 21, 2019 18:35 |
|
|
|
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
Ethereal писал(а): Но только не на сам словарь, а на словарь-родитель, е мое. Это стиль FIG, Если хочешь чтобы при поиске по словарю обходило только сам словарь, то первое слово словаря полем связи должно иметь ноль. Это стиль Forth-79. И очень правильный подход, кстати. Стек словарей - это уже из серии "сунем стек везде, а там оно как-нибудь само все устроится".
[quote="Ethereal"]Но только не на сам словарь, а на словарь-родитель, е мое. Это стиль FIG, Если хочешь чтобы при поиске по словарю обходило только сам словарь, то первое слово словаря полем связи должно иметь ноль. Это стиль Forth-79.[/quote] И очень правильный подход, кстати. Стек словарей - это уже из серии "сунем стек везде, а там оно как-нибудь само все устроится".
|
|
|
|
Добавлено: Вт май 21, 2019 18:31 |
|
|
|
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
_KROL писал(а): p.s. И должно ли поле связи слов словаря указывать в конце на сам словарь? Если хочешь чтобы при поиске по словарю обходило также словари-родители, то да. Но только не на сам словарь, а на словарь-родитель, е мое. Это стиль FIG, Если хочешь чтобы при поиске по словарю обходило только сам словарь, то первое слово словаря полем связи должно иметь ноль. Это стиль Forth-79. Ну а в Forth-83 и ANS-Forth порядок обхода уже формируется в стеке словарей и там опять таки первое слово словаря полем связи должно иметь ноль. Хотя к чему подобные вопросы должно, не должно. Может ты чего-то небывалое задумал и хочешь сделать так как хочешь сделать. Поэтому не должно или не должно, а как ты считаешь нужным так и должно.
[quote="_KROL"]p.s. И должно ли поле связи слов словаря указывать в конце на сам словарь?[/quote]Если хочешь чтобы при поиске по словарю обходило также словари-родители, то да. Но только не на сам словарь, а на словарь-родитель, е мое. Это стиль FIG, Если хочешь чтобы при поиске по словарю обходило только сам словарь, то первое слово словаря полем связи должно иметь ноль. Это стиль Forth-79. Ну а в Forth-83 и ANS-Forth порядок обхода уже формируется в стеке словарей и там опять таки первое слово словаря полем связи должно иметь ноль.
Хотя к чему подобные вопросы должно, не должно. Может ты чего-то небывалое задумал и хочешь сделать так как хочешь сделать. Поэтому не должно или не должно, а как ты считаешь нужным так и должно.
|
|
|
|
Добавлено: Вт май 21, 2019 18:28 |
|
|
|
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
Они одинаковые. Пусть ты создал словарь BLABLA. Тогда первое слово в нем будет иметь LFA указывающий на 0A0202083 словаря-родителя. А сам словарь BLABLA будет иметь DD 0A0202083h DD адрес_последнего_слова_словаря_BLABLA DD адрес_такого-же_поля_в_словаре_созданном_предпоследним
Они одинаковые. Пусть ты создал словарь BLABLA. Тогда первое слово в нем будет иметь LFA указывающий на 0A0202083 словаря-родителя. А сам словарь BLABLA будет иметь DD 0A0202083h DD адрес_последнего_слова_словаря_BLABLA DD адрес_такого-же_поля_в_словаре_созданном_предпоследним
|
|
|
|
Добавлено: Вт май 21, 2019 18:22 |
|
|
|
|
|
Заголовок сообщения: |
Re: Моя система(_KROL) |
|
|
У меня должно примерно линковаться следующим образом: Код: 0<-forth<-abc<-voc1<-... ^-some1<-some2 или по другому? p.s. И должно ли поле связи слов словаря указывать в конце на сам словарь?
У меня должно примерно линковаться следующим образом: [code]0<-forth<-abc<-voc1<-... ^-some1<-some2[/code] или по другому? 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 У меня такое чувство, что тут немного разные порядки хранения данных... Я вообще хотел сделать стек контекста, но видно мне пока и достаточно того, как реализовано в твоём форте (я что-то про него забыл).
[quote="Ethereal"]HEX
: VOCABULARY <BUILDS A0202083 , CURRENT @ CELL- , HERE VOC-LINK @ , VOC-LINK ! IMMEDIATE DOES> CELL+ CONTEXT ! ;[/quote][quote="Ethereal"] DD DoDOES DD DoVOC DD 0A0202083h DD LAST_NAME[/quote]У меня такое чувство, что тут немного разные порядки хранения данных...
Я вообще хотел сделать стек контекста, но видно мне пока и достаточно того, как реализовано в твоём форте (я что-то про него забыл).
|
|
|
|
Добавлено: Вт май 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-а неизбежность ассемблерности чего-либо никак не вытекает.
[quote="_KROL"]Как я понял, нельзя ссылаться в CFA на код на форте, так как никакого нативного CALL нету. Так что, реализовывать примитив (VOCABULARY) на ассемблере?[/quote]Как-то логика твоей мысли ускользает. Ячейка CFA может ссылаться на (содержать адрес) [code]DoCOLON: sub ebp, 4 mov [ebp], esi lea esi, [eax+4] NEXT$[/code]тогда сразу после CFA (т.е. в PFA) располагается шитый код.
CFA может ссылаться на [code]DoDOES: sub ebp, 4 mov [ebp], esi mov esi, [eax+4] push ebx lea ebx, [eax+8] NEXT$[/code]тогда сразу после CFA (в первой ячейке PFA) располагается адрес где находится шитый код.
[i]Кстати именно из-за наличия этого адреса в первой ячейке PFA при КШК требуется не CREATE , а отдельное слово <BUILDS. CREATE ведь создает слово, которое возращает адрес совершенно пустого в момент создания PFA. А <BUILDS одну ячейку в PFA под дело занимает. Под то дело, что надо-же куда-то положить адрес, который в ПШК вмонтирован в инструкцию call.[/i]
Так-что от того, что в КШК нету call-а неизбежность ассемблерности чего-либо никак не вытекает.
|
|
|
|
Добавлено: Вт май 21, 2019 08:46 |
|
|
|
|