小编Byt*_*ter的帖子

编译器如何"知道"如何将代码转换为特定于处理器的程序集?

答案者已经知道的东西,但在这里,无论如何都要显示我的思考过程:

从HLL到机器代码,这里发生了大量的事件(有连接器和其他东西,但是现在让我们忽略它):

HLL - >编译器 - >汇编程序---->机器代码

根据我购买的硬件,它可能有不同的处理器(Intel,SPARC,ARM等).汇编语言是特定于处理器的.因此,当代码来自Compiler - > Assembler时,生成的汇编代码是特定于处理器的.

切入点:

例如:我的硬件上有Windows操作系统.而且,我得到'用于Windows 7 64位的C编译器'.而且我在同一硬件上也有Ubuntu,我得到'Ubuntu 64位的C编译器'.

  1. 我可以在具有不同处理器架构的不同硬件上使用相同的OS,或者在相同硬件上使用不同的OS(如上例所示).当我下载C编译器时,为什么编译器被列为特定于操作系统?而不是处理器特定?由于编译器的重点是将HLL转换为Assembly,这是特定于处理器体系结构而不是特定于操作系统.

  2. 假设1.事情是如何完成的,当我下载适用于Windows 7和Ubuntu的编译器时,编译器如何知道要生成哪个特定于处理器的汇编代码?编译器是否附带各种特定于处理器的汇编程序?

compiler-construction assembly processor processor-architecture

7
推荐指数
1
解决办法
2783
查看次数