Я изучаю систему LLVM и прочитал документацию по началу работы. Однако некоторые элементы номенклатуры (и формулировки в примере clang) все еще немного сбивают с толку. Следующие термины и команды являются частью процесса компиляции, и мне было интересно, сможет ли кто-нибудь объяснить их немного лучше для меня:
clang -S
vs.clang -c
(я знаю, что делает-c
, но чем отличаются результаты?) * (Изменить)- LLVM Bitcode против LLVM IR (в чем разница?)
- Файлы .ll и файлы .bc (что это такое, чем они отличаются?)
- код сборки LLVM и собственный код сборки (есть ли разница?)
На более высоком уровне я понимаю весь процесс компиляции и могу достаточно хорошо отслеживать свой путь, я просто застреваю в некоторых моментах, где, например, я ожидаю увидеть "IR", но вместо этого посмотрите «битовый код» или «сборку LLVM», что наводит меня на мысль, что я не понимаю их почти так хорошо, как следовало бы!