Редактирование:
EXECUTE
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == В [[Каллисто|Каллисто 1.0]] слово EXECUTE тесно связано с [[Адресный интерпретатор|адресным интерпретатором]]: <pre> 552 ;#EXECUTE 553 ; EXECUTE ( т −− ) Исполнить слово с токеном т (CFA). 554 LEXEC: .DB 7 555 .TEXT "EXECUTE" ; ( i∗x xt −− j∗x) 556 .DW LCLD 557 EXEC: .DW JEXEC ; Исполнить слово, CFA которого хранится в стеке. … 2479 NEXTDD: M7 M5 KRM7 RME ∗ KRM5 + ; Считать MEMW[W], это должно быть CFA очередного слова в шитом коде 2480 M8 KGOTO8 ; передать управление на адрес, записанный в CFA … 2501 DOEXECRX: M7 ; W := MEMW[RI++] считать шитый код 2502 1 EE 4 − FX<0 NEXTDD ; Слово из области двоичных данных? 2503 NEXTPP: RM7 KPRGM RME ∗ RM7 1 + KPRGM + ; Считать MEMW[W], это должно быть CFA очередного слова в шитом коде 2504 M8 KGOTO8 ; передать управление на адрес, записанный в CFA 2505 2506 JEXEC: ; Обработчик EXECUTE 2507 RM3 M8 1 + M3 KRM8 ; POP RX 2508 PGOTO DOEXECRX ; W := RX, JMP MEMW[W] </pre> Реализации из SP-Forth 4.20: <pre> \ ================================================================ \ Вызов подпрограммы (для подпрограммного шитого кода) CODE1 EXECUTE ( i*x xt -- j*x ) \ 94 \ Убрать xt со стека и выполнить заданную им семантику. \ Другие изменения на стеке определяются словом, которое выполняется. MOV EBX, EAX MOV EAX, [EBP] LEA EBP, 4 [EBP] JMP EBX ;C </pre> <pre> CODE C-EXECUTE ( i*x xt -- j*x ) \ 94 \ Убрать xt со стека и выполнить заданную им семантику. \ Другие изменения на стеке определяются словом, которое выполняется. MOV EDX, EAX MOV EAX, [EBP] LEA EBP, 4 [EBP] CALL EDX RET END-CODE … : EXECUTE STATE @ IF ['] C-EXECUTE INLINE, ELSE EXECUTE THEN ; IMMEDIATE </pre> <pre> : EXECUTE S" C-EXECUTE" TC-FINDOUT INLINE, ; IMMEDIATE </pre> === Советская реализация === Слово EXECUTE в ФОРТ-ЕС было [[примитив]]ом. Вот его определение: <PRE> EXECUTE CFA-> ИСПОЛНИТЬ СЛОВО ПО CFA ЕГО СТАТЬИ 11 Экран номер 11 ( 31.03.86 ! 0! @ С! С@ , С, EXECUTE ) CODE EXECUTE ( СFA->) 14 POP, NEXT1 B, END-CODE </PRE> В FORTH ИТЭФ слово EXECUTE тоже было [[примитив]]ом, вот его определение: <PRE> ; BX - WP BP - указатель стека возвратов ; SI - IP-регистр SP - указатель стека параметров ; DI - указатель области USER HEAD 207Q,'EXECUT',305Q,EXEC ; EXECUTE POP BX JMP [ BX ] </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице