Связь с администрацией сайта:       

demo

Среди толпы я одинок

5. Как кодируются подпрограммы в Z-машине

 5.1 Начальная позиция
Процедура, требуется, чтобы начать программу по адресу в памяти, которая может быть представлена ​​в переполненном адресе (например, в версии 5 оно должно происходить в адресе байта, который делится на 4).
5.2 Заголовок
Подпрограмма начинается с одного байта с указанием количества локальных переменных (от 0 до 15 включительно).
 
5.2.1
В версиях от 1 до 4, из количества 2-байтовых слов следует, что они дают начальные значения для этих локальных переменных. В версии 5 и более поздних версий, начальные значения равны нулю.
5.3 Первая инструкция
Выполнение инструкций начинается с байта после информации заголовка. Там нет никакого формального "конечного маркера" для процедуры (это просто предполагается, что выполнение в конечном итоге приводит к ответным действиям).
5.4 Главная процедура в V6
В версии 6, есть "главная" процедура (чей упакованный адрес хранится в слове на $06 в заголовке) вызывается , когда игра запускается. Будет неправильно вернуться из этой процедуры.
5.5 Начальные точки выполнения (другие вопросы)
Во всех остальных версиях, слово в $06 содержит адрес байта первой команды для выполнения. Z-машина запускается в среде без каких - либо локальных переменных, из которых, опять же, возвращение будет неправильным.
 
Примечание
Обратите внимание, что нахождение процедуры допустимо в динамической памяти. Marnix Klooster предполагает, что это может быть использовано для компиляции кода во время выполнения.
В версии 3 и 4, Inform всегда хранит 0 в качестве начальных значений для локальных переменных.
 
Rate this item
(0 votes)
Login to post comments