编译器如何识别其主机的硬件?哪个组件?

How does a compiler identify its host machine's hardware? Which component?

我的老师告诉我,中间代码对所有系统都是通用的,但是编译器的一个组件然后根据 system/environment 代码在 运行 上使其不同。谁能解释一下。

通常情况下,编译器分为两部分:进行解析的前端和生成中间代码的前端。然后是一个后端,它获取中间代码并生成汇编代码或机器代码。

前端可以是通用的,但后端是为特定的目标构建的。所以编译器不必"identify"主机,只知道目标。

注意host和target可能是不同的系统,用于cross compilation