Предлагаю внести ясность в терминологию. править

Традиционно негативным явление в последнее время стало бездумное внесение в язык терминов-англицизмов без минимальной попытки их осмысления или поиска аналогов в русском.

Применительно к LLVM такими терминами стали «фронтэнд» и «бекэнд». Предлагаю чуток покопаться в родном языке и найти для них подходящие аналоги. Например, препроцоессор и постпроцессор. Эти термины менее точны, но суть передают верно: мы имеем предварительную и окончательную обработку некоего представления программы в процессе работы компилятора.

Можно (нужно?) пойти дальше и продолжить изыскания, учитывая, что препроцессор - это как бы не столько препроцессор, сколько «предварительный анализатор-преобразователь», а постпроцессор - это скорее «кодогенератор». В общем, предлагаю открыть дискуссию. 213.87.123.122 09:03, 28 февраля 2014 (UTC)Ответить

О категоризации править

Ну, к примеру компилятор С/С++, это не сам llvm а clang, что всё-же не одно и то-же. А сам по себе llvm - бэкэнд к компиляторам много чего. Нужно ли его категоризировать по этому признаку? --be-nt-all 12:20, 26 ноября 2015 (UTC)Ответить

Размытое определение, предмет статьи править

Предлагаю конкретизировать статью, в общем, и определение, в частности (и при необходимости разделить статью на части, дабы не пытаться описывать в одном месте малосвязанные вещи).

Насколько я понял (из тонны размыленных объяснений), прежде всего LLVM это технология байткода с определенной концепцией (отличной от Java, .Net и пр.; кстати чем ?). Об одноименном ПО, реализующим данную технологию, можно и нужно сказать ниже, или в отдельной статье.

Как это описано в en-wiki, или как это описывают авторы ПО, совершенно неважно, если эти статьи плохи (т.к. играют в Сепульки не давая ответов на базовые вопросы).

А уж софистике, типа "универсальная система анализа, трансформации и оптимизации программ" или размытому "проект инфрастуктуры для создания компиляторов и сопутствующих утилит" в определении не место.

NB: Я призываю делать не ОРИСС, но вдумчивый и полезный читателю реферат. Пусть он не будет цитировать все окружающее проект словоблудие, но скажет главное и без воды.

Вот например[1], один из лучших ответов на первый вопрос об LLVM, который задает себе любой человек. На это, IMHO, и нужно равняться. Grain (обс.) 15:14, 30 августа 2019 (UTC)Ответить

TODO: озвучить вопросы по текущим формулировкам, пригласить редакторов к обсуждению. Grain (обс.) 15:26, 30 августа 2019 (UTC)Ответить

Вы неправильно поняли, поэтому и отменил. LLVM - это компилятор и набор библиотек для создания компиляторов. Никакого отношения к "Виртуальной машине" нет (указал в описании правки). Интерпретаторы в llvm (lli) - это кусочек для построения jit компиляторов на базе llvm, но не взлетело. Больший ВП:ВЕС именно у llvm как компилятора си / си++ (android, freebsd), объ. си (apple ios, macos), может еще котлин(?) и раст (ЯП). (llvm наиболее широко применяется именно в роли AOT компилятора, тогда как java bytecode / .net clr это чаще JIT.) Да, я понимаю, что вы с точки зрения проекта "википедия - свободная энциклопедия" более идеальный редактор, но llvm это не java машина и я выступаю против вашей формулировки. Ваше понимание llvm=байткод неверно, байткодом является llvm ir (внутреннее представление компилятора). Это так же как написать - GCC - это набор средств преобразования представления GIMPLE IR, GENERIC TREE или GCC SSA. (ссылаться на полуживой русский стэковерфлоу с 2 тыс просмотров и 3 плюсами от 2010 года - не нужно. Сравни [2] 330 плюсов 88 тыс просмотров, 2010 и несколько более новых и адекватных ответов. Нужно ссылаться на КНИГИ 2015 и научные статьи) `a5b (обс.) 16:46, 30 августа 2019 (UTC)Ответить

Раздел "Память": верен ли пример? править

%x = load i32* %x.ptr  ; загрузить значение типа i32 по указателю %x.ptr

%tmp = add i32 %x, 5  ; прибавить 5

store i32 %tmp, i32* %x.ptr  ; и положить обратно

Вопрос по третьей строке: используемый для адресации "%x" разве не испорчен в первой строке? Я к тому, что комментарий "и положить обратно", вроде, неверный. DasQwerty (обс.) 08:56, 22 августа 2023 (UTC)Ответить

  • Да, пример кривой во всём. К тому же "Prior to LLVM 15, pointer types also specified a pointee type, such as i8*, [4 x i32]* or i32 (i32*)*. In LLVM 15, such “typed pointers” are still supported under non-default options. See the opaque pointers document for more information.", т.е. такие указатели поддерживаются только по историческим причинам. В emit'е их обычно нет. Halfcookie (обс.) 10:45, 22 августа 2023 (UTC)Ответить