Я оцениваю различные возможности для пользовательской виртуальной машины и не включил LLVM в другой вопрос. Поскольку я все еще работаю над оценкой виртуальных машин со встроенным языком, я пока не могу проверить/проверить это самостоятельно. Я хотел бы узнать следующую информацию о LLVM/CLANG:
- Хорошо ли он поддерживается в Windows? Или Солярис? (кроссплатформенность для меня плюс)
- Если я хочу написать свою собственную/пользовательскую виртуальную машину на C-подобном языке, что мне нужно будет включить в проект? (разделы или компоненты LLVM/CLANG и т. д.)
- Я бы по понятным причинам держал компилятор отдельно от виртуальной машины (а не писал интерпретатор). Каковы будут размеры необходимых компонентов? Могу ли я встроить их «в» программу вместо динамической ссылки на них?
- Могу ли я избежать JIT? Я хотел бы иметь виртуальную машину с байт-кодом, которая не обязательно преобразуется в собственный код. Это поможет, когда JIT не поддерживается на платформе (например, системы с ограничительными разрешениями памяти, которые не позволяют отображать память wx/rwx).
Я знаю, что антивирус clamav, например, использует байт-код, поддерживаемый LLVM/clang, для поддержки динамических подписей/подписей времени выполнения. Однако я не знаю, существует ли средство для реализации этого и/или учебные пособия или документация, которые проведут вас через процесс реализации такой вещи.
Спасибо! :)