Редактирование:
BEGIN
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == Слово BEGIN начинает свою работу с того, что с помощью [[?COMP]] убеждается — [[INTERPRET|текстовый интерпретатор]] находится в [[Слово ]|состоянии компиляции]]. Если нет, слово [[?COMP]] вызывает [[Авост приложения|авост]] с сообщением об ошибке №17. Само слово BEGIN ничего не компилирует в [[шитый код]]. Оно лишь [[⟨MARK|запоминает в стеке текущий адрес]], чтобы в дальнейшем скомпилировать на него [[?BRANCH|условный]] (цикл BEGIN…[[UNTIL]]) или [[BRANCH|безусловный]] (циклы BEGIN…[[AGAIN]] и [[Цикл BEGIN-WHILE-REPEAT|BEGIN…WHILE…REPEAT]]) переход. <pre> 3677 ;#BEGIN 3678 ; BEGIN I ( −− ) Начало циклов "BEGIN". 3679 LBEGIN: .DB 85H 3680 .TEXT "BEGIN" 3681 .DW LAGAIN 3682 BEGIN: .DW CALL, QCOMP, LMARK, ONE, EXIT </pre> Реализации из SP-Forth 4.20: <pre> : BEGIN \ 94 \ Интерпретация: семантика неопределена. \ Компиляция: ( C: -- dest ) \ Положить следующую позицию передачи управления, dest, на управляющий стек. \ Добавить семантику времени выполнения, данную ниже, к текущему определению. \ Время выполнения: ( -- ) \ Продолжить выполнение. ?COMP ALIGN-BYTES @ ALIGN-NOP \ HERE TO :-SET <MARK 3 ; IMMEDIATE </pre> <pre> : BEGIN POSTPONE BEGIN DP @ TO :-SET ; IMMEDIATE </pre> === Советская реализация === Юрий Семёнов приводит следующее определение слова BEGIN (стр. 64): : BEGIN ?COMP HERE 1 ; IMMEDIATE У Баранова-Ноздрунова определение слова BEGIN выглядит так (стр. 58): : BEGIN ( ---> A,2 ) <MARK 2 ; IMMEDIATE В 11-й главе [http://www.forth.com/starting-forth/sf11/sf11.html Starting FORTH] слово BEGIN определяется так: : BEGIN HERE ; IMMEDIATE Описание слова BEGIN и определение циклов BEGIN в ядре ФОРТ-ЕС: <pre> BEGIN HK->А,1 /КОМПИЛЯЦИЯ/ НАЧАЛО ЦИКЛА "BEGIN" 47 -> /ИСПОЛНЕНИЕ/ Экран номер 47 ( 31.03.86 СТАНДАРТНЫЕ СТРУКТУРЫ УПРАВЛЕНИЯ ) : BEGIN ?COMP <MARK 1 ; IMMEDIATE : UNTIL 1 ?PAIRS COMPILE ?BRANCH <RESOLVE ; IMMEDIATE : AGAIN 1 ?PAIRS COMPILE BRANCH <RESOLVE ; IMMEDIATE : WHILE 1 ?PAIRS 1 [COMPILE] IF ; IMMEDIATE : REPEAT >R >R [COMPILE] AGAIN R> R> [COMPILE] THEN ; IMMEDIATE </pre> Определение слова BEGIN в FORTH ИТЭФ: <PRE> HEAD 305Q,'BEGI',316Q,BEGIN,$COL ; BEGIN DW QCOMP,HERE,ONE,SEMI </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице