Написание исходных файлов LLVM против использования API - PullRequest
1 голос
/ 02 февраля 2012

Я создаю бэкэнд LLVM для компилятора. Мне интересно, есть ли какой-то недостаток в том, чтобы мой бэкэнд писал ИК-код в файлы вместо использования API. API являются сложными (особенно если кто-то использует язык, отличный от C ++, в моем случае Haskell) и сложен в использовании. ИК гораздо проще понять. Мне не нужна JIT-компиляция, выходной код будет скомпилирован в машинный код стандартными инструментами командной строки.

Ответы [ 2 ]

3 голосов
/ 03 февраля 2012

Формат ИК меняется от версии к версии. API меняется гораздо реже. В прошлом были примеры, когда формат ИК резко изменился, поэтому вам нужно было потратить много времени, чтобы выдержать эти изменения.

Использование API является предпочтительным методом. Если иногда вам неясно, какие вызовы API вам понадобятся, вы можете использовать бэкэнд cpp в качестве источника вдохновения:)

2 голосов
/ 03 февраля 2012

Как сказал Антон, в использовании API есть определенное преимущество по сравнению с выделением текстового IR.Я просто хочу затронуть вопрос, который вы затронули в отношении сложности API и его использования в Haskell.

Обратите внимание, что в LLVM есть C API, который (помимо более стабильного) подходит для интерфейсов на иностранных языках.Привязки Python существуют для LLVM с использованием этого API, а также для Haskell ( это легко найти от Google) и для других языков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...