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

Viv*_*rma 3 c c++ compiler-construction systems-programming intermediate-code

我的老师告诉我,中间代码对于所有系统都是通用的,但是编译器的一个组件会根据运行代码的系统/环境使其不同.有人可以解释一下吗.

Som*_*ude 7

通常,编译器分为两部分:执行解析的前端,并生成中间代码.然后是后端,它接受中间代码并生成程序集或机器代码.

前端可以是通用的,但后端是为特定目标构建的.因此编译器不必"识别"主机,只知道目标.

请注意,主机和目标可能是不同的系统,用于交叉编译.

  • 好吧,而不是三个部分,因为后端的主要部分也是与机器无关的 - 否则它将是一个地狱. (2认同)