程序集文件,目标文件和二进制文件有什么区别?

时间:2016-09-10 16:54:04

标签: compilation clang llvm

我正在使用Clang编译器,并且总是在汇编文件(.s),目标文件(.o)和二进制文件(.bc)之间混淆。任何人都可以解释他们的区别吗?

1 个答案:

答案 0 :(得分:2)

程序集文件(.s)包含人类可读形式的机器指令,称为汇编语言。目标文件包含机器可读的二进制形式的相同指令。汇编文件可以由汇编程序(as)转换为目标文件。

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

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