汇编文件、目标文件和二进制文件之间有什么区别?

wad*_*wad 3 compilation llvm clang

我正在使用 Clang 编译器,并且总是对汇编文件 (.s) 、目标文件 (.o) 和二进制文件 (.bc) 感到困惑。谁能解释一下他们的区别?

sep*_*p2k 6

汇编文件 (.s) 包含人类可读形式的机器指令,称为汇编语言。目标文件包含机器可读的二进制形式的相同指令。汇编文件可以被汇编器(as)翻译成目标文件。

LLVM 位码文件 (.bc) 包含二进制形式的 LLVM 指令。它可以由 LLVM 编译器 (llc) 翻译为机器代码,也可以使用 LLVM 解释器 (lli) 直接执行。

您的问题中未列出 LLVM 程序集文件 (.ll)。它们包含与位码文件相同的指令,但采用人类可读的形式。可以使用 LLVM 汇编器 (llvm-as) 将它们转换为位码文件。