Language agnostic 详尽描述cpu体系结构的文件,以编写可重定目标编译器

Language agnostic 详尽描述cpu体系结构的文件,以编写可重定目标编译器,language-agnostic,compiler-construction,compilation,cpu,cpu-architecture,Language Agnostic,Compiler Construction,Compilation,Cpu,Cpu Architecture,我正在为每个cpu架构A[I](x86-32、x86-64、ARM、安腾等)寻找一个文件F[I]。每个文件F[i]都将提供关于体系结构A[i](寄存器、指令集、语义等)的足够信息,因此,对于任何语言L,都有可能编写一个采用任何F[i]的程序P,并为语言L生成一个编译器优化器C[i],使其成为本机A[i]。 当然,P关于A[i]的知识完全来自F[i] 每个F[i]都应该包含足够的信息,以便对于语言L到本机A[i]的任何给定编译器C',我们可以编写一个p,生成一个C[i],其性能与C'一样好。 理想

我正在为每个cpu架构A[I](x86-32、x86-64、ARM、安腾等)寻找一个文件F[I]。每个文件F[i]都将提供关于体系结构A[i](寄存器、指令集、语义等)的足够信息,因此,对于任何语言L,都有可能编写一个采用任何F[i]的程序P,并为语言L生成一个编译器优化器C[i],使其成为本机A[i]。 当然,P关于A[i]的知识完全来自F[i]

每个F[i]都应该包含足够的信息,以便对于语言L到本机A[i]的任何给定编译器C',我们可以编写一个p,生成一个C[i],其性能与C'一样好。 理想情况下,F[i]文件将使用能够描述未来cpu体系结构的相同语言编写

这样的文件F[i]是否存在(至少对于最常见的cpu架构)?那我在哪里可以下载呢? 这样的描述已经存在吗?

  • 我不知道有这样的数据库

  • 据我所知,最近的公共数据库是GCC使用的处理器描述。他们将处理器描述与一些代码混合,以非数据驱动的方式处理代码生成的某些方面


我想你会对西风“国家编译器基础设施”项目感兴趣;请参阅128.143.136.29/zephyr/[我想输入一个真实的链接,但StackOverflow不允许我为这个主机执行此操作。尽管如此,该链接仍然有效。不,我不明白为什么它没有一个好的符号名称,但嘿,它不是我的站点。]


他们认真尝试定义机器描述形式,我相信他们编码了许多“通用”机器指令集。在你做出任何选择之前,你应该先阅读他们的论文。

我没有意识到这样的事情,我认为这太抽象和复杂了,不可能存在一个可行的p

我相信任何有用的F都可以有效地描述公共中间语言和单个CPU指令集之间的转换(即使该语言是声明性的,而不是传统的编译器)。看一看,它用于声明有关后端的大量信息。好吧,它仍然不足以完整地描述体系结构,而且显然非常复杂

我不知道p如何知道L,但创建编译器C[I]需要这些知识。当然,除非你创建P是为了了解L,在这一点上,P变成了一个L,实际上是一个传统的编译器前端,这并不是什么新鲜事。唯一的区别是,您正在编写一个用于发出编译器的程序,但我看不出这如何比像某人事先编写的那样编写
C'
节省任何东西。(解析是一个更简单、更小的问题,因此在解析器生成方面取得了成功的进步。尽管如此,解析器生成器在实现工作和质量上充其量只能与专家解析器手工编写的产品相媲美。)或者,制作一个AI并教它编译器构造,但在目前的人工智能状态下,这是不可能的,然后你必须找到一种方法来教授这些语言(阅读:仍然没有免费的编译器供你使用)


除此之外,编译器必须知道的不仅仅是CPU指令。操作系统服务、ABI和可执行格式只是它们面临的许多重要问题中的三个。我同样怀疑对这些问题采用类似的解决方案。“前端和后端解耦”的老把戏在工作上几乎同样有效,显然更有可能,对我来说也更有意义。

Joao Dias证明,至少对于代码生成来说,这个问题是无法确定的。也就是说,对于一般的机器架构,这样的程序P不可能存在。他还开发了对典型机器架构完全有效的启发式算法。我建议您阅读,它还回顾了在这个问题上所做的大量工作

您将找到与和规范语言相关的一些相关工具和说明。规范本身可能处于混乱状态,Dias博士更有可能拥有准确且最新的规范

Zephyr网页非常陈旧,绝对过时,不应该链接到。
但是你可以读到:-)

我也不知道,但这并不意味着它们不存在。这个星球上有很多无知的人;告诉你不认识的人是没有帮助的。我想如果你解释一下为什么你认为它们可能不存在,你的答案会更好。非常感谢,这就是我想要的答案。所以已经有了CSDL,一个描述语言家族。CSDL由SLED、DIPPT、调用约定语言和最复杂的部分lambda RTL组成。(我还在读所有的链接…)你的链接非常有趣。不幸的是,似乎西风项目不再活跃,无论是你的链接还是听到这个消息感到遗憾。尝试联系用户Norman Ramsey用户:41661,他是主要贡献者之一。