Редактирование:
[COMPILE]
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == <pre> 3333 ;#BracketCOMPILE 3334 ; [COMPILE] I ( −− ) Скомпилировать следующее слово независимо от его признака IMMEDIATE. 3335 ; Заставить следующее слово скомпилироваться, даже если оно обладает признаком немедленного исполнения. 3336 ; Используется внутри определений через двоеточие. Сейчас используется мало, в моде POSTPONE 3337 LBCOM: .DB 89H 3338 .TEXT "[COMPILE]" ; ( "<пр>имя" −− ) 3339 .DW LCREAT 3340 BCOM: .DW CALL, BL,WORD, FIND, ZEQU, ZERO,QERR, DROP, N2CFA, BRAN,RCOMMA </pre> Реализации из SP-Forth 4.20: <pre> : POSTPONE \ 94 \ Интерпретация: семантика не определена. \ Компиляция: ( "<spaces>name" -- ) \ Пропустить ведущие разделители. Выделить имя, ограниченное пробелами. \ Найти имя. Добавить семантику компиляции имени в текущее определение. ?COMP PARSE-NAME SFIND DUP 0= IF -321 THROW THEN 1 = IF COMPILE, ELSE LIT, ['] COMPILE, COMPILE, THEN ; IMMEDIATE … : [COMPILE] \ 94 CORE EXT \ Интерпретация: семантика неопределена. \ Компиляция: ( "<spaces>name" -- ) \ Пропустить ведущие пробелы. Выделить name, ограниченное пробелами. \ Найти name. Если имя имеет иную семантику компиляции, чем "по-умолчанию", \ добавить ее в текущее определение; иначе добавить семантику выполнения name. \ Неопределенная ситуация возникает, если name не найдено. ?COMP ' COMPILE, ; IMMEDIATE </pre> <pre> : POSTPONE \ 94 ALSO TC-WL ?COMP PARSE-NAME SFIND DUP 0= IF -321 THROW THEN 1 = IF COMPILE, ELSE LIT, S" COMPILE," TC-FINDOUT COMPILE, THEN PREVIOUS ; IMMEDIATE : [COMPILE] \ 94 CORE EXT ALSO TC-WL ' PREVIOUS COMPILE, ; IMMEDIATE </pre> === Советская реализация === У Баранова-Ноздрунова определение слова [COMPILE] выглядит так (стр. 65): : [COMPILE] ( ---> ) 'N NAME> , ; IMMEDIATE Описание и определение слова [COMPILE] в ядре ФОРТ-ЕС: <PRE> [COMPILE] НК -> СКОМПИЛИРОВАТЬ СЛЕДУЮЩЕЕ СЛОВО 41 НЕЗАВИСИМО ОТ ЕГО ПРИЗНАКА "IMMEDIATE" Экран номер 41 ( 31.03.86 -TRAILING ' ['] [COMPILE] LOAD THRU ;S --> ) : [COMPILE] ( ->) -FIND IF , EXIT THEN BADWORD ; IMMEDIATE </PRE> Определение слова [COMPILE] в FORTH ИТЭФ: <PRE> HEAD 311Q,'[COMPILE',335Q,BCOM,$COL ; [COMPILE] DW DFIND,ZEQU,ZERO,QERR,DROP,COMMA,SEMI </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице