Forth
http://fforum.winglion.ru/

Некоторые вопросы устройства системы(_KROL)
http://fforum.winglion.ru/viewtopic.php?f=24&t=3121
Страница 3 из 3

Автор:  _KROL [ Пт апр 28, 2017 18:18 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

Почитал, теперь думаю: чем отличется слова BLOCK и LOAD?
Код:
Есть область памяти для буферов(в "верхней" части сегмента, до стека).
[BCBT] (table)
BUFFERS:
[BUF0] (64x16)
[BUF1]
...

Buffer Control Block(BCB) [size=16]
{
hnd rw 1
ofs rw 1
fname rb 12 ; ********.*** (without 0)
}

? CONSTANT MAXBUF
? CONSTANT BCBT
? CONSTANT BUFFERS
? CONSTANT BCBSIZE
? CONSTANT BUFSIZE
VARIABLE CURBUF

: BCB BCBSIZE * BCBT + ; ( n -- BCBn )
: BUFFER BUFSIZE * BUFFERS + ; ( n -- BUFn )
: BUFFNAME BCB 2+ 2+ 2+ ; ( n -- filename(ptr of strz) )

: LOAD ( n -- BUFn: data; BCBn.ofs=n ) ;
: BLOCK ( n -- BUFn: data; BCBn.ofs=n ) LOAD ;
: UPDATE .... ;
: LIST CURBUF BUFFER 10 LITERAL DO DUP 40 LITERAL TYPE CR LOOP DROP ;
: SAVE-BUFFERS .... ;
: EMPTY-BUFFERS .... ;
: FLUSH SAVE-BUFFERS EMPTY-BUFFERS ;


...Сожалею что WINGLION умер. Я с его (SPRINTER)PC-FORTHа начинал понимать "внутринности". Возможно
без него и не было б моей упрощённой архитектуры...

Автор:  gudleifr [ Пт апр 28, 2017 18:33 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

_KROL писал(а):
Почитал, теперь думаю: чем отличется слова BLOCK и LOAD?
BLOCK - просто загрузка в память (например, для редактирования), LOAD - загрузка и исполнение.

Автор:  _KROL [ Пт апр 28, 2017 18:41 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

Точно! А то я забыл как-то...

Автор:  _KROL [ Пт май 12, 2017 23:09 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

Дорогие коллеги, пожалуйста всё-же проясните один вопрос на счёт словарей F83!
Я понял что:
1. CONTEXT - указатель на последний словарь, с которого идёт поиск
Т.е.

...(слова системы)
FORTH
...(пользовательские слова)
MYVOC(польз. словарь)

Так как словари связаны тоже списком, то поиск идёт тоже последовательно.
(и нет никакого стека, как в F94)

2. CURRENT - текущий словарь. В него вроде должны добавляться слова...
Но обьясните такую вещь: как могут добавляться слова допустим в FORTH, если
перед ним MYVOC? Или может я чего-нибудь не понимаю??

P.s. Была мысль о доп. поле в словах, но это же занимает и больше места!
P.p.s. MOleg про словари F94 хорошо написал. Спасибо ему!

Автор:  Victor__v [ Пт май 12, 2017 23:54 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

Да уж, ДОС это сила. Зато api нет, а вместо них прерывания

Цитата:
Сейчас думаю над словами для работы с файлами

Это для трансляции текстов имеется ввиду?

Автор:  _KROL [ Сб май 13, 2017 12:55 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

Ага, была мысль сделать как в Turbo Pascal поддержку несколько файлов...

Автор:  _KROL [ Сб май 13, 2017 13:04 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

(!) Hishnik, я только что заметил, что в теме "Навешивание обработчиков на компиляцию"(by Victor__v) я могу добавлять вложения(всё разрешено), а в своих (двух) темах не могу! С чем это связано?
...
Уточняю, при создании темы на некоторых(не всех) форумах мне также не разрешается добавлять файлы...
Перехожу на новый форум - Programming.

Автор:  Ethereal [ Ср июн 07, 2017 08:29 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

_KROL писал(а):
М... У Баранова есть VOC-LINK, что нету в F83(я всё-таки лучше буду придерживаться этого стандарта ;])

(я просто хочу написать для начала чисто классическую систему)

VOC-LINK это внутренняя кухня организации словарей. Она отдана на усмотрение создателя Форт-системы и в стандартах не фиксируется никак. И вообще тебе этот VOC-LINK понадобится только для того, чтобы написать слово FORGET (ну или MARKER). А пользователю твоей Форт-системы и вовсе не понадобится. Поэтому я и говорю "внутренняя кухня".

Автор:  Ethereal [ Ср июн 07, 2017 08:42 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

_KROL писал(а):
Но обьясните такую вещь: как могут добавляться слова допустим в FORTH, если перед ним MYVOC? Или может я чего-нибудь не понимаю??
Когда ты создаешь некий новый словарь резервируется ячейка, которая будет хранить адрес самого последнего слова в этом словаре. Она создается при исполнении VOCABULARY. И у каждого словаря такая ячейка есть. И у словаря FORTH тоже от рождения есть.

Поэтому добавление слова к словарю FORTH (переменная CURRENT при этом указывает на упомянутую выше ячейку для словаря FORTH, из нее ты адрес этой ячейки и берешь), после того как был создан словарь MYVOC делается так. Пусть последнее слово в словаре FORTH имеет имя BLI. А ты создаешь слово BLA. Так вот выбираешь из ячейки для адреса последнего слова в словаре FORTH адрес BLI и вставляешь в заголовок BLA. Чтобы BLA по цепочке указывала на BLI. А потом адрес слова BLA записываешь в ячейку для хранения последнего слова словаря FORTH. Все.
_KROL писал(а):
P.s. Была мысль о доп. поле в словах, но это же занимает и больше места!
Так это поле итак есть. Оно называется LFA. И больше ничего не надо.

Автор:  Ethereal [ Ср июн 07, 2017 09:23 ]
Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)

_KROL писал(а):
AWORD FNEXT,"FNEXT"
cld
lodsw
jmp ax

_KROL писал(а):
Т.е. правильно:
FNEXT:
cld
lodsw
jmp [ax]
Нет здесь никакого правильно.
Первый вариант - прямой шитый код (шитый код хранит значения адресов куда прыгать для исполнения).
Второй вариант - косвенный шитый код (шитый код хранит значения адресов где лежат адреса куда прыгать для исполнения).

Первый вариант быстрее. Второй - классичнее. Собственно понятие PFA органическим образом подходит только ко второму варианту. При косвенном шитом коде PFA - адрес где начинается шитый код определения этого слова, если оно создавалось через двоеточие или адрес точки входа нативного кода слова, если оно определено в кодах. А поле CFA для определений в нативном коде указывает на и содержит значение PFA.
При прямом шитом коде понятие PFA как-то сохраняет смысл для слов, определенных через двоеточие, но теряет смысл для слов в нативном коде. Ибо точка входа в код определения - это сразу адрес CFA.

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