Редактирование: EXIT
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 55: | Строка 55: | ||
В [[Каллисто|Каллисто 1.0]] примитив EXIT тесно связан с остальным [[Адресный интерпретатор|адресным интерпретатором]], сложность которого вызвана необходимостью исполнять [[шитый код]] как из [[Регистры байтовых данных|области данных]], так и из [[Память программ|памяти программ]]: | В [[Каллисто|Каллисто 1.0]] примитив EXIT тесно связан с остальным [[Адресный интерпретатор|адресным интерпретатором]], сложность которого вызвана необходимостью исполнять [[шитый код]] как из [[Регистры байтовых данных|области данных]], так и из [[Память программ|памяти программ]]: | ||
<pre> | <pre> | ||
179 ; Следующие две подпрограммы вызваются косвенно через RC (КППС) из : и DOES> | |||
180 ; SETRIPRG и SETRIDAT внутри тела ":" содержат ссылки на RPUSHRIP и RPUSHRID | |||
181 | |||
182 ; Начало CALL при вызове из памяти программ. | |||
183 RPUSHRIP: | |||
184 PPRM 9042 ; RX := RI ; Текущий указатель шитого кода | |||
185 ENT RME / FANS <−> KINT M5 ∗ − KM2 RM5 KM2 ; RPUSH (RX) | |||
186 RM7 RTN ; RX := W, оптимизация | |||
187 | |||
188 ; | |||
189 ; Начало CALL при вызове из памяти данных. | |||
190 RPUSHRID: | |||
191 RM6 10001 + ; RX := RI ; Текущий указатель шитого кода | |||
192 ENT RME / FANS <−> KINT M5 ∗ − KM2 RM5 KM2 ; RPUSH (RX) | |||
193 RM7 RTN ; RX := W, оптимизация | |||
… | |||
1768 ;#EXIT | 1768 ;#EXIT | ||
1769 ; EXIT ( −− ) Закончить исполнение текущего определения. | 1769 ; EXIT ( −− ) Закончить исполнение текущего определения. | ||
Строка 81: | Строка 97: | ||
2487 FX<0 SETRIDAT | 2487 FX<0 SETRIDAT | ||
2488 GOTO SETPRG | 2488 GOTO SETPRG | ||
2489 ; | |||
2490 CALL: ;∗∗ CALL, когда управление передаётся в память программ | |||
2491 KGSBC ; RPUSH RI ; RX := W, адрес поля кода нового слова | |||
2492 2 + ; Теперь RX указывает на его тело | |||
2493 SETRIPRG: | |||
2494 PPM 9042 ; R9042 := RX | |||
2495 SETPRG: .NUMT RPUSHRIP | 2495 SETPRG: .NUMT RPUSHRIP | ||
2496 MC ; RC := RPUSHRIP ;∗∗ Следующий вызов −− из памяти программ | 2496 MC ; RC := RPUSHRIP ;∗∗ Следующий вызов −− из памяти программ |