compiler-construction - 查找多语言编译器或优化器(C,C++,Java)

标签 compiler-construction multilingual stm optimization

简而言之,我正在寻找一种方法来编辑开源编译器或优化器,以将传统的锁实现更改为软件跨国内存事务。我有三种目标语言,C,C ++和Java。一种想法可能是使用GCC,因为它现在已经支持stm。问题是,我想不出一种方法来对GCJ转储的Java字节码实施这些更改。对于llvm也会出现相同的问题。

tldr;试图找到像gcc或llvm这样的编译器或优化器,我可以很容易地破解它们以更改源代码或源代码的中间表示形式。

最佳答案

如果您想要一个可以解析和转换C,C ++和Java的工具,则可以考虑使用DMS Software Reengineering Toolkit

DMS解析语言的源代码,构建AST,允许您对这些AST应用过程或模式直接重写,并可以为修改后的程序重新生成有效的源文本。源代码到源代码的转换比过程转换要容易得多,因为您必须对树的结构了解得少得多,才能导航/修改它。

DMS具有front ends for Java, C, C99, and C++11 all in a variety of dialects,使DMS能够解析和打印这些语言并构造完整的符号表,这对于在代码上进行任何认真的转换绝对是必不可少的。对于C和Java,DMS可以提供​​control flow, dataflow and call graphs,在许多分析和转换任务中很有用。对于C ++,DMS具有控制流分析和数据流分析。

通过指定作为锁惯用语的模式,然后应用转换将其删除,您应该能够找到“传统”锁实现。

关于compiler-construction - 查找多语言编译器或优化器(C,C++,Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688936/

相关文章:

c - 实现 C 预处理器

c++ - 有人如何定义数据类型,然后在数据类型定义之后立即在同一文件中包含的其他文件中使用它

c++ - 假设安装了 GCC 和 G++ 如何编译使用 boost 库的文件? (线程)

java - 共享库 JNI 上 undefined reference

xcode - 适用于 Mac App Store 的多语言应用程序 - 在哪里设置 Mac App Store 中显示的语言?

clojure - 有使用 Clojure STM 处理大型数据集的经验吗?

clojure - 在 Clojure 中使用 STM 的读者-作者

java - 如何用真正的多语言字符串做一个应用程序?

两种不同语言的android语言文件夹

clojure - 为什么在更改Clojure中的ref时通勤函数被调用两次?