【发布时间】:2012-10-26 05:09:07
【问题描述】:
我的脑海中有很多基本问题。我需要清除它们。
声明 1: 编译器将人类可读的代码转换为目标代码,然后通过链接器将这些代码转换为机器代码(可执行文件)。
我在这里吗?
wikipedia 上写着
Object files are produced by an assembler, compiler, or other language
translator, and used as input to the linker.
问题 1: 汇编程序将汇编语言代码 (MOV A, BADD C) 转换为机器代码。对于像 C++ 这样的高级语言,它是由上面的链接器生成的。所以汇编程序不在任何地方使用。那么它如何创建一个上面写的目标文件呢?
生成中间代码,使代码在不同的架构上运行。
问题 2: *.class(字节码)文件是由 java 编译器目标文件创建的吗?如果是,那么我们可以说运行它们的 JVM 是一种链接器(但它不会创建可执行文件)?
问题 3: 当我们在 Turbo C++ 中编译 C++ 程序时,我们会得到 *.obj 文件,它们是目标文件。我们可以使用它们在其他架构中生成可执行文件吗?
【问题讨论】:
-
烦人:正如你所说,这些不是“怀疑”,而是问题。
-
你是对的!标题已更改。
-
不太对。编译器将一种语言 A(不一定是“可读”)转换为一种语言 B,它可以比源语言更“可读”或更不“可读”。
标签: assembly compiler-construction machine-code object-code