1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/snikeguo-Llvm.NET

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Llvm.NET

Статус сборки

Добро пожаловать в Llvm.NET!

Llvm.NET предоставляет привязки языка LLVM и среды выполнения для приложений на основе платформы .NET. Целью Llvm.NET является создание надежной библиотеки классов, точно отражающей модель C++ LLVM. Это достигается путем расширения API LLVM-C, который упакован в нативную Windows DLL (LibLLVM.DLL). Llvm.NET использует поддержку LibLLVM для доступа к библиотеке классов LLVM и проектирования её в управляемую библиотеку .NET, которая точно отражает первоначальный дизайн библиотеки классов.

Цель состоит в том, чтобы максимально точно соответствовать оригинальной модели классов, при этом предоставляя объектную модель для приложений .NET, которая кажется знакомой и последовательной с общими стилями и шаблонами в приложениях .NET Framework. Таким образом, хотя имена классов, методов и перечислений часто аналогичны своим эквивалентам в LLVM, они не всегда совпадают.

Документация для библиотеки классов Llvm.NET расположена по адресу http://netmf.github.io/Llvm.NET

Почему Llvm.NET?Llvm.NET был создан как способ использования LLVM в качестве обратной стороны для инструмента компиляции перед выполнением (AOT) для приложений .NET, ориентированных на микроконтроллеры (например, AOT-компилятор для .NET Micro Framework). Первое концепт-доказательство, основанное на Llvm.NET, успешно выполнило базовое приложение, которое могло реализовать микроконтроллерное эквивалентное "Привет, мир!" приложение (например, Blinky — приложение, мигающее светодiodом) с использованием LLVM в качестве генератора кода. Это привело к возрождению проекта AOT с собственным генератором кода, связанным с набором команд ARMv4.Таким образом, родился проект Llilum. Llvm.NET продолжил развиваться и совершенствоваться вместе с Llilum, хотя он остаётся самостоятельным проектом, не имеющим зависимостей ни от Llilum, ни от его компонентов. Llvm.NET является жизнеспособным решением для любых приложений .NET, желающих использовать возможности библиотек LLVM из приложений .NET.

Краткая история

Llvm.NET начался с LLVM 3.4 как обёртка C++/CLI, что позволило более тесное связывание с оригинальной моделью объектов C++, чем это было поддержано официальным API LLVM-C. По мере развития Llvm.NET также развивалось LLVM. Постепенно база кода LLVM перешла на требование поддержки C++11 в языке для сборки. Это стало проблемой для обёртки C++/CLI, так как компилятор Microsoft C++/CLI не поддерживал синтаксис C++11. В результате был сделан переход в Llvm.NET на расширенный C API с адаптерным слоем на C#, чтобы обеспечить полный опыт, который ожидают разработчики .NET. Хотя переход был трудоёмким, изменениям подверглось очень мало прикладного кода.### Поддержка платформ На данный момент LLVM.NET поддерживает сборки Win32 и x64, ориентированные на полную рабочую среду десктопа версии 4.5. Чтобы упростить жизнь, пакет NuGet содержит как нативные бинарные файлы платформы, так и сам LLVM.NET, который собран для платформы "AnyCPU". LLVM.NET содержит код для динамического обнаружения платформы, на которой он запущен, и загрузки соответствующего DLL. Это позволяет приложениям строиться для AnyCPU без необходимости создания множества конфигураций сборки и каналов выпуска для приложений. Однако, если ваше приложение имеет другие требования, которые требуют конкретной целевой платформы, то LLVM.NET всё равно может работать.### Сборка Llvm.NET

Предварительные условия

  • Скачайте источники LLVM для Yöntem 3.9.1 (в настоящее время LLVM версии 3.9.1)
    • Вам потребуется программа для извлечения файлов из этого архива. На Windows рекомендованная программа — 7zip
  • Сборка библиотек LLVM
    Чтобы собрать библиотеки LLVM, вы можете использовать предоставленный PowerShell-скрипт Build-LlvmWithVS.

Для получения более подробной информации о работе со скриптом откройте командную строку PowerShell в директории исходного кода Llvm.NET и выполните PS> Get-Help .\Build-LlvmWithVs.ps1.

Примечание: На типичной машине разработчика сборка библиотек LLVM занимает примерно 1,5 часа, поэтому обычно лучше всего её запустить ночью или когда вы отсутствуете перед компьютером. К счастью, это требуется сделать только один раз для каждой версии LLVM.


Сборка Llvm.NET

Предварительные условия

  • Скачайте источники LLVM для 3.9.1 (в настоящее время LLVM версии 3.9.1)
    • Вам потребуется программа для извлечения файлов из этого архива. На Windows рекомендованная программа — 7zip
  • Сборка библиотек LLVM
    Чтобы собрать библиотеки LLVM, вы можете использовать предоставленный PowerShell-скрипт Build-LlvmWithVS.

Для получения более подробной информации о работе со скриптом откройте командную строку PowerShell в директории исходного кода Llvm.NET и выполните PS> Get-Help .\Build-LlvmWithVs.ps1.

_Примечание: На типичной машине разработчика сборка библиотек LLVM занимает примерно 1,5 часа, поэтому обычно лучше всего её запустить ночью или когда вы отсутствуете перед компьютером. К счастью, это требуется сделать только один раз для каждой версии LLVM._Если у вас есть Visual Studio 2017 RC (или RTM, когда она будет доступна) с Visual C++ Tools для CMake, вы можете собирать библиотеки LLVM в VS. Однако, по умолчанию происходит сборка всего проекта, что может занять до шести часов на большинстве типичных машин. Вместо полной сборки можно использовать Build-LlvmWithVS.ps1 PowerShell-скрипт с параметром -CreateSettingsJson для создания файла CMakeSettings.json, который Visual Studio использует для конфигурации, чтобы уменьшить сборку до необходимых библиотек для Llvm.NET.#### Использование Visual Studio Репозиторий включает файл решения Visual Studio, который позволяет собирать Llvm.NET и LibLLVM для одной конфигурации платформы, а также запускать доступные единичные тесты. Это основной способ работы с исходным кодом Llvm.NET во время разработки.

Внедрение автоматизированной сборки

Поддержка автоматизированной сборки для Llvm.NET использует файл проекта BuildAll.slnproj для сборки всех исполняемых файлов, подписывает их [подпись пока не поддерживается], и генерирует пакет NuGet. Чтобы собрать полный пакет, просто выполните команду msbuild BuildAll.slnproj.

Пример приложения

Пример приложения TestDebugInfo предоставляет пример использования Llvm.NET для генерации LLVM Bitcode, эквивалентного тому, что генерирует компилятор Clang для простого файла на языке C.

TestDebugInfo фактически не парсит исходный код; вместо этого это рукописной построенный и документированный пример того, как использовать Llvm.NET для генерации байт-кода.

Код поведения

Этот проект принял код поведения, определённый Contributor Covenant для уточнения ожидаемого поведения в нашем сообществе. Для получения дополнительной информации см. Код поведения .NET Foundation.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

ЛЛВМ байндс фор .нет Развернуть Свернуть
C# и 6 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/snikeguo-Llvm.NET.git
git@api.gitlife.ru:oschina-mirror/snikeguo-Llvm.NET.git
oschina-mirror
snikeguo-Llvm.NET
snikeguo-Llvm.NET
dev