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/ |