【发布时间】:2012-09-26 09:53:31
【问题描述】:
我在这篇文章中积累了三个不同但背景相似的问题。以下相同。
- 来自源的步骤序列->可执行文件
- 32/64 位版本的编译器
- c 数据类型大小对编译器的依赖性
Q1:来自源代码的步骤序列->可执行文件
我认为以下是从源文件生成可执行文件的步骤
- 编写的源文件是用任何一种高级/中级语言编写的,并由编译器进行预处理。
- 当我们使用 GCC/G++ 然后 gcc -save-temps -c 同时生成一个 .S 和一个 .O 文件,它们是分别是程序集(可读)和目标代码(非人类可读)。
- 最后阶段是链接此目标代码以解析未知符号以创建机器(或)可执行代码。
所以这里的问题是这些假设对吗?我经常看到术语对象和机器代码可以互换使用。两者的具体区别是什么?
Q2:32/64 位版本的编译器
在 Q1 的上述步骤中,编译器类型的影响究竟在哪里。是不是生成的汇编代码变了?
Q3:c 数据类型大小对编译器的依赖性
就c-programming而言,数据类型的大小取决于编译器类型(或)硬件类型。请详细说明这些因素的依赖关系。虽然在堆栈溢出中看到了一些与 Q3 的讨论,但我仍然对此感到困惑。
【问题讨论】:
标签: c gcc compiler-construction