Можно ли использовать LLVM-сборку напрямую? - PullRequest
12 голосов
/ 15 октября 2011

Я прочитал несколько веб-страниц и статей о llvm, и я весьма заинтересован в этом проекте.(Может быть, что-то узнать о написании компилятора без необходимости бороться со сложными моментами в x86).

Есть страницы, которые описывают, как написать сборку llvm и как ее собрать, но я ничего не нашел накакая среда необходима для их выполнения.Я знаю, что могу запустить llvm-gcc для своих файлов, чтобы получить объектный файл, который исполняется в C-контексте.Но в случае, если я не хочу использовать среду выполнения C (libc.so и друзья), что необходимо для запуска кода llvm?Есть ли какая-либо документация по этому поводу?

Ответы [ 3 ]

10 голосов
/ 15 октября 2011

Похоже, LLVM-ассемблер .

llvm-as - это ассемблер LLVM. Он читает файл, содержащий читаемый человеком язык ассемблера LLVM, переводит его в битовый код LLVM, и записывает результат в файл или в стандартный вывод.

3 голосов
/ 18 марта 2016

Быстрая настройка: (Для файлов llvm 3.4.0 .ll в Windows)

расширенный текстовый редактор из https://notepad -plus-plus.org /

бинарные файлы llvm из https://github.com/CRogers/LLVM-Windows-Binaries

hello.ll как "UTF-8 без спецификации" (этот код в формате llvm 3.4.0):

@msg = internal constant [13 x i8] c"Hello World!\00"
declare i32 @puts(i8*)
define i32 @main() {
    call i32 @puts(i8* getelementptr inbounds ([13 x i8]* @msg, i32 0, i32 0))
    ret i32 0
}

В командной строке:

lli hello.ll

Быстрая настройка: (для файлов llvm 3.8.0 .ll на окнах)

расширенный текстовый редактор из https://notepad-plus-plus.org/

бинарные файлы из: http://llvm.org/releases/download.html#3.8.0

hello.ll как «UTF-8 без BOM» (этот код в формате llvm 3.8.0):

@msg = internal constant [13 x i8] c"Hello World!\00"
declare i32 @puts(i8*)
define i32 @main() {
    call i32 @puts(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @msg, i32 0, i32 0))
    ret i32 0
}

В командной строке:

clang hello.ll -o hello.exe
hello.exe

Или как одна команда:

clang hello.ll -o hello.exe & hello.exe

Ошибки в char16_t, u16String и т. Д. Означают, что для clang нужны:-fms-совместимость-версия = 19

3 голосов
/ 11 ноября 2012

Статический компилятор, который принимает сборку LLVM:

http://llvm.org/docs/CommandGuide/llc.html

Справочник по языку сборки LLVM:

http://llvm.org/docs/LangRef.html

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