Интерпретатор qumiri
qumiri — интерпретатор и JIT-компилятор для языка Qumir. Позволяет быстро запускать программы без предварительной компиляции.
Использование
qumiri [опции]
Опции командной строки
| Опция | Описание |
|---|---|
-i FILE, --input-file FILE |
Читать программу из файла (по умолчанию: stdin) |
--jit |
Использовать LLVM JIT вместо IR-интерпретатора |
-O[0|1|2|3] |
Уровень оптимизации (только для JIT) |
--time-us |
Показать время выполнения в микросекундах |
--print-ast |
Вывести AST после парсинга |
--print-ir |
Вывести IR после преобразования |
--print-llvm |
Вывести LLVM IR (только для JIT) |
-h, --help |
Показать справку |
Режимы работы
IR-интерпретатор (по умолчанию)
Программа преобразуется во внутреннее представление (IR) и выполняется интерпретатором. Это быстрый режим запуска, подходящий для отладки.
qumiri -i программа.kum
LLVM JIT
Программа компилируется в машинный код «на лету» и выполняется. Обеспечивает максимальную скорость выполнения.
qumiri --jit -i программа.kum
С оптимизацией:
qumiri --jit -O3 -i программа.kum
Примеры
Запуск программы из файла
qumiri -i hello.kum
Запуск с замером времени
qumiri --jit --time-us -i benchmark.kum
Вывод:
результат => 3628800
time: 1234 µs
Отладка: просмотр AST
qumiri --print-ast -i программа.kum
Отладка: просмотр IR
qumiri --print-ir -i программа.kum
Чтение из stdin
echo 'алг нач вывод "Привет", нс; кон' | qumiri
Или интерактивно:
qumiri
алг
нач
вывод "Привет!", нс
кон
^D
(Нажмите Ctrl+D для завершения ввода)
Сравнение режимов
| Характеристика | IR-интерпретатор | LLVM JIT |
|---|---|---|
| Время запуска | Быстрое | Медленнее (компиляция) |
| Скорость выполнения | Средняя | Высокая |
| Оптимизации | Нет | -O0 до -O3 |
| Отладка | Удобная | Менее удобная |
Рекомендации:
- Для отладки и коротких программ: IR-интерпретатор (по умолчанию)
- Для бенчмарков и длительных вычислений:
--jit -O3
Коды возврата
| Код | Описание |
|---|---|
| 0 | Успешное выполнение |
| 1 | Ошибка парсинга или выполнения |