(NEXT): различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
'''(NEXT)''' — стандартное слово [[Каллисто]], лишённое заголовка. Конец цикла со счётчиком в шитом коде. | '''(NEXT)''' — стандартное слово [[Каллисто]], лишённое заголовка. Конец цикла со счётчиком в [[Шитый код|шитом коде]]. | ||
(NEXT) ( −− ) Конец цикла со счётчиком в шитом коде (слово без заголовка). | (NEXT) ( −− ) Конец цикла со счётчиком в шитом коде (слово без заголовка). | ||
Это служебное слово. Его компилирует в шитый код слово [[NEXT]]. Нет ни малейшей необходимости использовать слово (NEXT) в прикладных программах. Для экономии памяти программ в [[Каллисто]] слово (NEXT) было лишено заголовка. | Это служебное слово. Его компилирует в шитый код слово [[NEXT]]. Нет ни малейшей необходимости использовать слово (NEXT) в прикладных программах. Для экономии памяти программ в [[Каллисто]] слово (NEXT) было лишено заголовка. |
Версия от 03:06, 20 июня 2016
(NEXT) — стандартное слово Каллисто, лишённое заголовка. Конец цикла со счётчиком в шитом коде.
(NEXT) ( −− ) Конец цикла со счётчиком в шитом коде (слово без заголовка).
Это служебное слово. Его компилирует в шитый код слово NEXT. Нет ни малейшей необходимости использовать слово (NEXT) в прикладных программах. Для экономии памяти программ в Каллисто слово (NEXT) было лишено заголовка.
Детали реализации
На самом деле в исходном тексте Каллисто 1.0 присутствуют два варианта слова (NEXT) — XNEXT и XNEXTD — реализующие циклы в памяти программ и данных. Слово NEXT компилирует XNEXTD, а XNEXT используется самим Каллисто.
Реализация
Для реализации цикла со счётчиком в ФОРТ-ЕС и FORTH ИТЭФ служили примитивы (LOOP) и (+LOOP)
Вот их описания и определения из ФОРТ-ЕС:
(+LOOP) * N-> ТЕСТ НА ЗАВЕРШЕНИЕ ЦИКЛА "DO +LOOP" 5 С ШАГОМ N (LOOP) * -> ТЕСТ НА ЗАВЕРШЕНИЕ ЦИКЛА "DO LOOP" 5 Экран номер 5 ( 09.09.86 BRANCH ?BRANCH (LOOP/ (+LOOP/ ) CODE BRANCH M: ВRANСН# RI 0 (, RI RFORTH LH, RI RMASK NR, RNEXT BR, CODE (LOOP) RW1 1 LA, 1 =F B, CODE (+LOOP) RW1 POP, 1 =H 0 RFIRST LH, 0 RSECOND SH, 0 RMASK NR, 0 RW1 AR, RW1 RFIRST AH, RW1 RFIRST STH, 0 RMASK CLR, BRANCH# BNH, RRET 6 (, 0 RRET LA, RI RTWO AR, RNEXT BR, END-CODE
Определения из FORTH ИТЭФ:
CNT: ADD SI, [SI] NEXT ... HEAD 206Q,'(LOOP',251Q,XLOOP ; (LOOP) ; Приращение индекса цикла LOOP и может быть ветвление INC WORD PTR [BP] LOP: MOV AX, [BP] CHP AX, 2[BP] JL CNT LV: ADD BP, 4 ADD SI, 2 NEXT HEAD 207Q,'(+LOOP',251Q,XPLOO ; (+LOOP) POP AX ADD [BP], AX CMP AX, 0 JL $LESS JMP LOP $LESS: MOV CX, [BP] ; Работа с отрицательными приращениями CMP [BP]+2, CX JLE LV JMP CNT
Ссылки
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |