Редактирование:
VALUE
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == Слово [[VALUE]] резервирует [[десятичный регистр]] и присваивает ему имя, по которому из [[Каллисто]] будет производиться обращение к этому регистру, а также начальное значение. Для записи в отведённый [[десятичный регистр]] в Каллисто используется слово [[TO]]. Создающая часть слова VALUE является высокоуровневой. Для ускорения исполнения величин обе исполняющие части слова VALUE написаны на [[ЯМК|языке МК]]. <pre> 2546 ;#VALUE 2547 ; VALUE ( x −− ) Определить следующее слово, как десятичную величину с начальным значением x. 2548 ; Для хранения величин VALUE используются десятичные регистры. 2549 ; Данные хранятся в ячейке между двумя CFA, чтобы разработчик мог определять собственные 2550 ; порождающие слова с двумя обработчиками высокого уровня, использущие стандартное TO 2551 LVALUE: .DB 5 2552 .TEXT "VALUE" ; ( x "<пр>имя" −− ) 2553 .DW LFVAR 2554 VALUE: .DW CALL, CREAT, DHERE, LITP 2555 .DB 39,16 ; 10000 2556 .DW SUB, COMMA, DCOMMA, LITP,TOVALUE,COMMA, PSCOD 2557 ; Исполняющая часть VALUE (обычное вхождение величины) 2558 RM7 1 + M5 ; ( −− x ) из десятичного регистра 2559 KRM5 RME ∗ KRM5 + M7 ; Получить номер регистра 2560 KRM7 KM3 KGOTO9 ; Положить значение на стек, NEXT 2561 TOVALUE: RM7 3 − M5 ; ( x −− ) в десятичный регистр 2562 KRM5 RME ∗ KRM5 + M7 ; Получить номер регистра 2563 RM3 MA 1 + M3 ; RA := адрес значения 2564 KRMA KM7 KGOTO9 ; Записать значение в десятичный регистр, NEXT </pre> Реализации из SP-Forth 4.20: <pre> CODE _TOVALUE-CODE POP EBX LEA EBX, -9 [EBX] MOV [EBX], EAX MOV EAX, [EBP] LEA EBP, 4 [EBP] RET END-CODE ' _TOVALUE-CODE TO TOVALUE-CODE … ' _TOVALUE-CODE >VIRT VALUE TOVALUE-CODE … : VALUE ( x "<spaces>name" -- ) \ 94 CORE EXT [T] HEADER [I] CONSTANT-CODE COMPILE, , TOVALUE-CODE COMPILE, ; </pre> <pre> : VALUE ( x "<spaces>name" -- ) \ 94 CORE EXT \ Пропустить ведущие пробелы. Выделить name, ограниченное пробелом. Создать \ определение для name с семантикой выполнения, определенной ниже, с начальным \ значением равным x. \ name используется как "значение". \ Выполнение: ( -- x ) \ Положить x на стек. Значение x - то, которое было дано, когда имя создавалось, \ пока не исполнится фраза x TO name, задав новое значение x, \ ассоциированное с name. HEADER ['] _CONSTANT-CODE COMPILE, , ['] _TOVALUE-CODE COMPILE, ; </pre>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице