I am looking into the LLVM system and I have read through the Getting Started documentation. However, some of the nomenclature (and the wording in the clang example) is still a little confusing. The following terms and commands are all part of the compilation process, and I was wondering if someone might be able to explain them a little better for me:
clang -S
vs.clang -c
(I know what-c
does, but how do the results differ?) * (Edit)- LLVM Bitcode vs. LLVM IR (what is the difference?)
- .ll files vs. .bc files (what are they, how do they differ?)
- LLVM assembly code vs. native assembly code (is there a difference?)
At a higher level, I understand the overall compilation process, and can track my way through fairly well, I just get stuck at some points where, for example, I am expecting to see "IR", but instead see "bitcode" or "LLVM assembly" which leads me to think I don't understand them nearly as well as I should!