Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт мар 19, 2024 09:06

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

Обзор темы - Некоторые вопросы устройства системы(_KROL)
Автор Сообщение
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
_KROL писал(а):
AWORD FNEXT,"FNEXT"
cld
lodsw
jmp ax

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

Первый вариант быстрее. Второй - классичнее. Собственно понятие PFA органическим образом подходит только ко второму варианту. При косвенном шитом коде PFA - адрес где начинается шитый код определения этого слова, если оно создавалось через двоеточие или адрес точки входа нативного кода слова, если оно определено в кодах. А поле CFA для определений в нативном коде указывает на и содержит значение PFA.
При прямом шитом коде понятие PFA как-то сохраняет смысл для слов, определенных через двоеточие, но теряет смысл для слов в нативном коде. Ибо точка входа в код определения - это сразу адрес CFA.
Сообщение Добавлено: Ср июн 07, 2017 09:23
  Заголовок сообщения:  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. И больше ничего не надо.
Сообщение Добавлено: Ср июн 07, 2017 08:42
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
_KROL писал(а):
М... У Баранова есть VOC-LINK, что нету в F83(я всё-таки лучше буду придерживаться этого стандарта ;])

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

VOC-LINK это внутренняя кухня организации словарей. Она отдана на усмотрение создателя Форт-системы и в стандартах не фиксируется никак. И вообще тебе этот VOC-LINK понадобится только для того, чтобы написать слово FORGET (ну или MARKER). А пользователю твоей Форт-системы и вовсе не понадобится. Поэтому я и говорю "внутренняя кухня".
Сообщение Добавлено: Ср июн 07, 2017 08:29
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
(!) Hishnik, я только что заметил, что в теме "Навешивание обработчиков на компиляцию"(by Victor__v) я могу добавлять вложения(всё разрешено), а в своих (двух) темах не могу! С чем это связано?
...
Уточняю, при создании темы на некоторых(не всех) форумах мне также не разрешается добавлять файлы...
Перехожу на новый форум - Programming.
Сообщение Добавлено: Сб май 13, 2017 13:04
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
Ага, была мысль сделать как в Turbo Pascal поддержку несколько файлов...
Сообщение Добавлено: Сб май 13, 2017 12:55
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
Да уж, ДОС это сила. Зато api нет, а вместо них прерывания

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

Это для трансляции текстов имеется ввиду?
Сообщение Добавлено: Пт май 12, 2017 23:54
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
Дорогие коллеги, пожалуйста всё-же проясните один вопрос на счёт словарей F83!
Я понял что:
1. CONTEXT - указатель на последний словарь, с которого идёт поиск
Т.е.

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

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

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

P.s. Была мысль о доп. поле в словах, но это же занимает и больше места!
P.p.s. MOleg про словари F94 хорошо написал. Спасибо ему!
Сообщение Добавлено: Пт май 12, 2017 23:09
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
Точно! А то я забыл как-то...
Сообщение Добавлено: Пт апр 28, 2017 18:41
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
_KROL писал(а):
Почитал, теперь думаю: чем отличется слова BLOCK и LOAD?
BLOCK - просто загрузка в память (например, для редактирования), LOAD - загрузка и исполнение.
Сообщение Добавлено: Пт апр 28, 2017 18:33
  Заголовок сообщения:  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а начинал понимать "внутринности". Возможно
без него и не было б моей упрощённой архитектуры...
Сообщение Добавлено: Пт апр 28, 2017 18:18
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
Сейчас думаю над словами для работы с файлами.
Пока у меня такие мысли:

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

Buffer Control Block(BCB) [size=20]
{
status rw 1
hnd rw 1
ofs rw 1
fname rb 13 ; ********.***0
rb 1
}

? CONSTANT MAXBUF
? CONSTANT BCBT
? CONSTANT BUFFERS
? CONSTANT BCBSIZE
? CONSTANT BUFSIZE

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


( продолжение далее )
Сообщение Добавлено: Ср апр 26, 2017 23:26
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
Ты частично оказался прав. Новые исправления

В самом начале(4TH.ASM):
Код:
org 0x100
; Start
mov sp,[S0_v]       ; Это
mov si,start
  jmp FNEXT

В слове QUIT уберите ",S0,SP!"

В слове INTERPRET(_PRIME.INC):
Код:
.notword:
dw DDUP             ; Это
dw ?NUMBER
dw ?BRANCH,!!WORD+3
dw NIP,NIP          ; Это
dw BRANCH,@b

В ?DIGIT (DIGITS.INC)
Код:
   .cont2:
  .cont1:
dw _DUP,BASE,GREQ
  dw ?BRANCH,@f
   dw ZERO,_AND      ; Это
   dw BRANCH,.cont

Вроде всё... Спасибо.
Сообщение Добавлено: Вт апр 25, 2017 11:03
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
не WORDS а именно words ( этого слова нет как раз )
если ввести какую-нибудь абракадабру результат тот же.
Проблема с перехватом исключений, наверно.
Сообщение Добавлено: Вт апр 25, 2017 09:23
  Заголовок сообщения:  Ошибка в системе  Ответить с цитатой
...Я был занят... Спасибо!
Сделайте начало INTERPRET таким:
Код:
FWORD INTERPRET,"INTERPRET"
@@:
dw _SZ
   dw ?BRANCH,.nointerp
dw _BL,WORD_,_DUP,?BRANCH,.nointerp
dw FIND_
  dw ?BRANCH, .notword
dw _DUP,I@_ADD,_2INC,SWAP

На счёт WORDS я не очень-то понял... Привожу скрин(у меня XP):

OK
WORDS C" CHAR CR FCLOSE FWRITE FREAD FOPEN FCREATE ". WORDS MCA>LFA LFA>MCA NFA
>MCA NFA>LFA <> = >= <= > < ABS D% D/ % / WORD $WORD QUIT INTERPRET ?NUMBER ?DIG
IT . U. #SIGN #> #S # <# HOLD PAD ALPHA UNTIL AGAIN BEGIN $UNTIL $AGAIN $BEGIN L
OOP DO $LOOP $DO THEN ELSE -IF IF <RESOLVE <MARK >RESOLVE >MARK FIND $FIND LITER
AL CCOMPILE COMPILE LIT'Z LIT' LIT , C, ALLOT !!WORD !!FENCE LASTERR! SOURCE-ID!
SOURCE! HLD! >MAXSZ! >SZ! >IN! LAST! HERE! BASE! ] [ LASTERR SOURCE-ID SOURCE H
LD SPAN >MAXSZ >SZ >IN LAST HERE BASE STATE FENCE TIBSZ TIB RZ SZ R0 S0 BS BL 1
0 TRUE FALSE VER IMMEDIATE VARIABLE CONSTANT DOES> (DOES>) ; :: : CREATE ?EXIT E
XIT EXECUTE ?BRANCH BRANCH BLANK ERASE FILL CMOVE> CMOVE 1-! 2+! 1+! 2+C! 1+C! @
+ I@+ C@+ 2! ! C! 2@ @ C@ SWAPL ROT ROT OVER 2SWAP SWAP DDUP DUP DNIP NIP ROLL P
ICK 3>R 3R> >R R> RDROP 2DROP DROP R@ S@ RP! RP@ DP! SP@ TYPE EMIT EXPECT KEY? K
EY WITHIN NEG NOT 0<> 0= 0> 0< AND XOR OR >< >> << U/% D/% /% 4* 2* * - + 4- 4+
2- 2+ 1- 1+ BYE NOOP FRET FNEXT FCALL NOP
OK
Сообщение Добавлено: Вс апр 23, 2017 22:37
  Заголовок сообщения:  Re: Некоторые вопросы устройства системы(_KROL)  Ответить с цитатой
А, понял это винда ругается. слова-то нет.
Сообщение Добавлено: Вс апр 23, 2017 17:37

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


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