Редактирование:
WORD
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == Слово WORD кладёт адрес считанного слова в [[Стек данных|стек]], как это требует Форт. Этот адрес a всегда равен [[HERE]] — как и в большинстве реализаций Форта. Первый байт по адресу a содержит число символов в считанном слове. Фактически это уже заготовка для [[Поле имени|поля имени]] новой [[Словарная статья|словарной статьи]], ждущая своего [[ALLOT]]. Длина имени слова ограничивается 31 литерой. <pre> 3167 ;#WORD 3168 ; WORD ( c −− a ) Ввести слово до стоп−литеры c. Дать его адрес, как строки со счётчиком. 3169 ; Считать одно слово из входного или экранного буфера и разместить его, начиная с адреса HERE 3170 ; Первый байт содержит число литер в слове. 3171 ; Положить адрес считанного слова на стек, как это требует Форт−79. 3172 ; Этот адрес a всегда HERE −− как и в большинстве реализаций Форта. 3173 LWORD: .DB 4 3174 .TEXT "WORD" ; ( c "<c>ccc<c>" −− HERE ) 3175 .DW LPAD 3176 WORD: .DW CALL, BLK,UAT, QDUP,ZBRAN,WD1, BLOCK, BRAN,WD2 3177 WD1: .DW TIB 3178 WD2: .DW IN,UAT, PLUS, SWAP, ENCL 3179 .DW HERE, BL,BLANK ; BL == 32 ( 31 имя и 1 байт длины) 3180 .DW IN,PSTOR, DUP,TOR, HERE,CSTOR 3181 .DW HERE,ONEP, FROMR, CMOVE, HERE, EXIT </pre> Реализация из SP-Forth 4.20: <pre> : WORD ( char "<chars>ccc<char>" -- c-addr ) \ 94 \ Пропустить ведущие разделители. Выбрать символы, ограниченные \ разделителем char. \ Исключительная ситуация возникает, если длина извлеченной строки \ больше максимальной длины строки со счетчиком. \ c-addr - адрес переменной области, содержащей извлеченное слово \ в виде строки со счетчиком. \ Если разбираемая область пуста или содержит только разделители, \ результирующая строка имеет нулевую длину. \ В конец строки помещается пробел, не включаемый в длину строки. \ Программа может изменять символы в строке. DUP SKIP PARSE 255 MIN DUP SYSTEM-PAD C! SYSTEM-PAD CHAR+ SWAP CMOVE 0 SYSTEM-PAD COUNT CHARS + C! SYSTEM-PAD ; </pre> === Советская реализация === Описание и определение слова WORD в ядре ФОРТ-ЕС: <PRE> WORD С->Т ВВЕСТИ СЛОВО ДО СТОП-ЛИТЕРЫ C; 27 ДАТЬ ЕГО АДРЕС КАК СТРОКИ СО СЧЕТЧИКОМ Экран номер 27 ( 31.03.66 ENCLOSE WORD ) : WORD ( C->T ) BLK @ IF BLK @ BLOCK ELSE TIB THEN >IN @ + SWAP ENCLOSE >IN +! HERE >R OVER - >R + ALIGNH HERE 1+ R@ CMOVE HERE R> 1+ ALLOT ALIGNH HERE OVER - 2- OVER C! R> DP! ; </PRE> Определение слова WORD в FORTH ИТЭФ: <PRE> HEAD 204Q,'WOR',304Q,$WORD,$COL ; WORD DW BLK,AT,DDUP,ZBRAN,WD1-$,BLOCK,BRAN,WD2-$ WD1: DW TIB,AT WD2: DW IN,AT,PLUS,SWAP,ENCL,HERE,BLAN,BLANK,IN DW PSTOR,TOR,I,HERE,CSTOR DW HERE,ONEP,FROMR,CMOVE,SEMI </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице