# Стеки виртуальной машины ВМ использует три фиксированных стека по 256 элементов. ## Стек данных `dstack` хранит значения `fzl_value_t`: числа, строки, булевы значения, ссылки на объекты и null. `PUSHNUM`, `PUSHBOOL` и `LOADCONST` помещают значения на стек. Арифметические и логические операции снимают операнды и кладут результат обратно. ## Стек вызовов `cstack` хранит адреса возврата. `CALL` сохраняет текущий адрес и переходит к функции, `RET` снимает последний адрес. Рекурсивные вызовы используют отдельные записи. ## Стек окружений `estack` хранит таблицы имён и владельцев объектов. `MK_ENVTABLE` создаёт окружение, `RM_ENVTABLE` уничтожает его, `STORE` добавляет имя, `LOOKUP_ENV` ищет значение, `WRITE` изменяет переменную. `ESCAPE_OBJECT` переносит возвращаемый объект перед закрытием окружения. Запуск `fz -d program.fzb` печатает декодированную последовательность опкодов и аргументов.