Как правильно использовать привязки LLVM?C#

Место общения программистов C#
Ответить
Anonymous
 Как правильно использовать привязки LLVM?

Сообщение Anonymous »

Я создаю небольшой компилятор только для того, чтобы изучить некоторые основы «мира компиляторов». На данный момент все вполне ок. Я создал интерфейс, который генерирует анализируемые узлы AST, и серверную часть, которая генерирует LLVM IR, объектный файл и исполняемый файл. Я использую язык C# и привязки LLVM C#. Меня беспокоит размер маршалируемой динамической библиотеки LLVM. Размер составляет около 123 МБ, что слишком много (на мой взгляд) для всего лишь .dll, и тогда мой компилятор занял бы слишком много места на пользовательском компьютере.

Я Я проверил папки bin rustlang, который также использует LLVM для своей серверной части, и не смог найти никаких библиотек LLVM (кроме unwind и lld).

Итак, мои первые вопросы: как rustlang связывается с LLVM? Ничего ли, что библиотека, с которой связывается C#, такая большая? Есть ли другой способ привязки к LLVM из C#?
И еще несколько вопросов :) Когда я создавал объектные файлы, я думал о том, как связать их между собой и ссылка на внешние библиотеки. Первым решением было сохранить компоновщик lld рядом с исполняемым файлом компилятора и вызвать его. Но он также был довольно большим (около 70 МБ). Поэтому я решил (пока только для Windows. В Linux планируется использовать clang) просто найти компоновщик Visual Studio и использовать его. Я знаю, что Crystal делает то же самое. Но теперь, когда я проверил папки bin rustlang, я увидел, что он использует собственный компоновщик под названием rust-lld, который довольно тяжелый.

Итак, второй вопрос. - Что лучше - иметь собственный компоновщик, такой как rustlang, или использовать встроенную систему, как это делает Crystal?

Подробнее здесь: https://stackoverflow.com/questions/790 ... m-bindings
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»