ref: remove old docs variant

This commit is contained in:
samsonium
2026-10-19 12:01:59 +03:00
parent 81d07aa6e5
commit 2d006d5e2b
12 changed files with 0 additions and 375 deletions
-19
View File
@@ -1,21 +1,2 @@
# Размещение объектов
Экземпляр класса во время исполнения представлен структурой объекта с массивом значений полей:
```
typedef struct
{
fzl_value_t *values;
size_t values_count;
} fzl_vm_object_t;
```
Поля получают последовательные индексы в порядке объявления.
Таблица класса хранит имя поля, тип и `slot_index`.
Поэтому `object.field` компилируется в `GET_FIELD` или `SET_FIELD` с числовым индексом.
Выражение `new ClassName` проверяет наличие класса и генерирует `ALLOC_OBJECT N`, где `N` — число полей.
Сравнение объектов проверяет указатели.
При уничтожении окружения освобождаются принадлежащие ему объекты и массивы их значений.
При возврате объекта из вложенного окружения `ESCAPE_OBJECT` переносит владение в родительское окружение.
-22
View File
@@ -1,24 +1,2 @@
# Стеки виртуальной машины
ВМ использует три фиксированных стека по 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` печатает декодированную последовательность опкодов и аргументов.