Комментарии 3
Если коротко. Вы писали для компилятора алгоритмы размещения сложных структур в памяти (которые назначают адреса объектам, и переменным, доступ к элементам многомерных массивов), или эту часть делает LLVM? Сколько весит в конце такой готовый компилятор, и потребление памяти в работе?
Привет!
1. По памяти и структурам: Тут разделение по режимам:
В VM (байткоде): Локальные переменные и индексы на стеке размещает наш компилятор. Динамика и структуры сидят в куче через
Value(tagged union).В AOT (
rqio build): Мы транслируем AST в C99 / LLVM IR. Выравнивание (alignment), паддинг и расчёт смещений полей в байтах уже берёт на себя бэкенд (TinyCC или Clang) при сборке.
2. Вес бинарника:
Сам CLI rqio (вместе с парсером, VM, рантаймом и C-компилятором) весит около 4.0 МБ на Linux и 4.4 МБ на Windows.
3. Потребление RAM:
В процессе парсинга, сборки и выполнения жрёт скромные 15–30 мб ram.
Привет!
1. По памяти и структурам: Тут разделение по режимам:
В VM (байткоде): Локальные переменные и индексы на стеке размещает наш компилятор. Динамика и структуры сидят в куче через
Value(tagged union).В AOT (
rqio build): Мы транслируем AST в C99 / LLVM IR. Выравнивание (alignment), паддинг и расчёт смещений полей в байтах уже берёт на себя бэкенд (TinyCC или Clang) при сборке.
2. Вес бинарника:
Сам CLI rqio (вместе с парсером, VM, рантаймом и C-компилятором) весит около 4.0 МБ на Linux и 4.4 МБ на Windows.
3. Потребление RAM:
В процессе парсинга, сборки и выполнения жрёт скромные 15–30 МБ RSS.

Архитектура RayQuiro: от синтаксического дерева и байт-код ВМ до нативного машинного кода через LLVM