Optimization 用于C程序的代码自动生成和自动调优工具或语言?

Optimization 用于C程序的代码自动生成和自动调优工具或语言?,optimization,compiler-construction,code-generation,abstract-syntax-tree,dsl,Optimization,Compiler Construction,Code Generation,Abstract Syntax Tree,Dsl,我想使用一些工具(免费的更好)或语言来帮助我完成以下两项任务: 任务1: 1.读取用户作为输入提供的规范文件(文本文件)。对于用户来说,规范文件的格式由我设计,用户必须遵循。 2.使用规范输入生成AST(抽象语法树)。 3.通过应用一些优化技术,如循环优化、阻塞或我想要的任何其他优化,将AST转换为另一个AST。(可选步骤) 4.将转换后的AST导出到源代码文件(C程序文件)。 任务2: 1.读取源代码文件(C程序文件)并生成AST来表示它。 2.通过应用一些优化技术,如循环优化、阻塞或我想要的

我想使用一些工具(免费的更好)或语言来帮助我完成以下两项任务:

任务1:
1.读取用户作为输入提供的规范文件(文本文件)。对于用户来说,规范文件的格式由我设计,用户必须遵循。
2.使用规范输入生成AST(抽象语法树)。
3.通过应用一些优化技术,如循环优化、阻塞或我想要的任何其他优化,将AST转换为另一个AST。(可选步骤)
4.将转换后的AST导出到源代码文件(C程序文件)。
任务2:
1.读取源代码文件(C程序文件)并生成AST来表示它。
2.通过应用一些优化技术,如循环优化、阻塞或我想要的任何其他优化,将AST转换为另一个AST。(对于某些优化,我可以将其参数化,例如循环展开深度。)

3.将转换后的AST导出到另一个优化的源文件(C程序文件)。

POET(经验调优的参数化优化)脚本语言是一种候选语言。还有其他工具或语言吗?

POET(经验调优的参数化优化)脚本语言是一种候选语言。还有其他工具或语言吗?

POET(经验调优的参数化优化)脚本语言是一种候选语言。还有其他工具或语言吗?

POET(经验调优的参数化优化)脚本语言是一种候选语言。还有其他的工具或语言吗?

OP通常想要的是一个。PTS通常能够接受任意语法规范,根据该语法构建解析器生成AST,应用源到源转换将解析的AST映射到其他AST,然后从最终AST重新生成源文本

OP的一个具体问题是解析/解析C源代码。几乎所有可用的PTS都没有为生产C代码(ANSI、GCC、MSStudio)这样做,要做到这一点需要做大量的工作。它们也不提供进行有趣转换所需的辅助分析,如符号表、控件或数据流分析

据我所知,只有我们的,和,对C有这样的具体支持

然而,Rose并不是为了接受DSL而设计的;它不允许任意语法定义,从而违反了PTS模型。相反,它使用EDG解析器前端(我认为这意味着它也接受C++14)。但它无法轻松处理OP的第一个请求。Rose也进行“源代码到源代码”的转换,但这是通过手工编写的过程代码来实现的,该过程代码在AST中爬行。它专注于科学计算,所以他们在阻塞循环等方面做了具体的工作


DMS设计用于接受任意语法(处理C和C++14),事实上,它可以同时处理多个语法,因此它将直接支持OP的第一个任务。DMS做表面语法(直接使用C语法编写)源到源重写以及过程重写。它没有被用于循环阻塞,但是DMS已经被用来构建C++的向量扩展,包括SIMD指令的代码生成,包括适当的循环优化。PTS通常能够接受任意语法规范,根据该语法构建解析器生成AST,应用源到源转换将解析的AST映射到其他AST,然后从最终AST重新生成源文本

OP的一个具体问题是解析/解析C源代码。几乎所有可用的PTS都没有为生产C代码(ANSI、GCC、MSStudio)这样做,要做到这一点需要做大量的工作。它们也不提供进行有趣转换所需的辅助分析,如符号表、控件或数据流分析

据我所知,只有我们的,和,对C有这样的具体支持

然而,Rose并不是为了接受DSL而设计的;它不允许任意语法定义,从而违反了PTS模型。相反,它使用EDG解析器前端(我认为这意味着它也接受C++14)。但它无法轻松处理OP的第一个请求。Rose也进行“源代码到源代码”的转换,但这是通过手工编写的过程代码来实现的,该过程代码在AST中爬行。它专注于科学计算,所以他们在阻塞循环等方面做了具体的工作


DMS设计用于接受任意语法(处理C和C++14),事实上,它可以同时处理多个语法,因此它将直接支持OP的第一个任务。DMS做表面语法(直接使用C语法编写)源到源重写以及过程重写。它没有被用于循环阻塞,但是DMS已经被用来构建C++的向量扩展,包括SIMD指令的代码生成,包括适当的循环优化。PTS通常能够接受任意语法规范,根据该语法构建解析器生成AST,应用源到源转换将解析的AST映射到其他AST,然后从最终AST重新生成源文本

OP的一个具体问题是解析/解析C源代码。几乎所有可用的PTS都没有为生产C代码(ANSI、GCC、MSStudio)这样做,要做到这一点需要做大量的工作。它们也不提供进行有趣转换所需的辅助分析,如符号表、控件或数据流分析

据我所知,只有我们的,和,对C有这样的具体支持

然而,Rose并不是为了接受DSL而设计的;它不允许任意语法定义,从而违反了PTS模型。相反,它使用EDG解析器前端(我认为这意味着它也接受C++14)。但它无法处理O