Редактирование:
(FOR)
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == В [[Каллисто|Каллисто 1.0]] присутствуют два варианта слова (FOR) — XFOR и XFORD — реализующие циклы в [[Память программ|памяти программ]] и [[Память двоичных данных|данных]]. Слово [[FOR]] компилирует XFORD, а XFOR используется самим [[Каллисто]]: <pre> 671 POPCNTD: RM3 1 + M3 672 CNTD: KRM6 RME ∗ KRM6 + M6 KGOTO9 … 675 POPCNT: RM3 1 + M3 676 CNT: 677 Cx PPM9210 ; Прочесть двухбайтовое значение по номеру X=0 678 PPM9042 ; RI := MEMW[RI] 679 KGOTO9 ; NEXT 680 681 ;#xFOR 682 ; (FOR) ( n −− ) Начало цикла со счётчиком в шитом коде (слово без заголовка). 683 ; Заголовок убран, слово (FOR) используется только словом FOR 684 ;LXFOR: .DB 5 685 ; .TEXT "(FOR)" 686 ; .DW LBRAN 687 XFORD: .DW JXFORD ; (FOR) в памяти данных 688 JXFORD: PKRM03 MA +/− PX<0 POPCNTD ; Защита от n<=0 689 RM3 1 + M3 ; POP n 690 KRM6 KRM6 KM2 <−> KM2 ; RPUSH MEMW[RI] ; RI := RI+2 691 RMA ENT RME / KINT MA RME ∗ − KM2 RMA KM2 ; RPUSH n 692 KGOTO9 ; NEXT 693 694 XFOR: .DW JXFOR ; (FOR) в памяти программ 695 JXFOR: PKRM03 MA +/− FX<0 POPCNT 696 RM3 1 + M3 ; POP n 697 PPRM9044 PPRM9044 KM2 <−> KM2 ; RPUSH MEMW[RI] ; RI := RI+2 698 RMA ENT RME / KINT MA RME ∗ − KM2 RMA KM2 ; RPUSH n 699 KGOTO9 ; NEXT </pre> === Советская реализация цикла со счётчиком === Описание слова (DO) и определения DO…LOOP в ядре ФОРТ-ЕС: <pre> (DO) *К W1,W2 -> ВХОД В ЦИКЛ СО СЧЕТЧИКОМ ОТ N2 ДО N1 24 DO HK ->А1,А2,3 /КОМПИЛЯЦИЯ/ НАЧАЛО ЦИКЛА "DO" CO 47 N1,N2-> /ИСПОЛНЕНИЕ/ СЧЕТЧИКОМ ОТ N2 ДО N1 Экран номер 24 ( 09.09.86 ЦИКЛЫ СО СЧЕТЧИКОМ: (DO/ I I' J LEAVE) CODE (DO) ( U1,U2->) 14 LHRW12 BAL, 1 =H 1 0 (, RI RFORTH LH, 1 RPUSH, RI RTWO AR, RW1 RPUSH, RW2 RPUSH, 2POP B, END-CODE Экран номер 47 ( 31.03.86 СТАНДАРТНЫЕ СТРУКТУРЫ УПРАВЛЕНИЯ ) : DO ?COMP COMPILE (DO) >MARK <MARK 3 ; IMMEDIATE : LOOP 3 ?PAIRS COMPILE (LOOP) <RESOLVE >RESOLVE ; IMMEDIATE : +LOOP 3 7PAIRS COMPILE (+LOOP) <RESOLVE >RESOLVE ; IMMEDIATE </pre> В FORTH ИТЭФ слово (DO) тоже было [[примитив]]ом: <PRE> HEAD 204Q,'(DO',251Q,XDO ; (DO) POP AX SUB BP, 2 POP [BP] SUB BP, 2 MOV WORD PTR [BP],AX NEXT </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице