简而言之,我正在寻找一种方法来编辑开源编译器或优化器,以将传统的锁实现更改为软件跨国内存事务。我有三种目标语言,C、C++ 和 Java。一个想法可能是使用 GCC,因为它现在支持 stm。问题是,我想不出一种方法来实现对 GCJ 转储的 java 字节码的这些更改。llvm 也会出现同样的问题。
tldr; 试图找到像 gcc 或 llvm 这样的编译器或优化器,我可以很容易地破解源代码或源代码的中间表示。
简而言之,我正在寻找一种方法来编辑开源编译器或优化器,以将传统的锁实现更改为软件跨国内存事务。我有三种目标语言,C、C++ 和 Java。一个想法可能是使用 GCC,因为它现在支持 stm。问题是,我想不出一种方法来实现对 GCJ 转储的 java 字节码的这些更改。llvm 也会出现同样的问题。
tldr; 试图找到像 gcc 或 llvm 这样的编译器或优化器,我可以很容易地破解源代码或源代码的中间表示。
如果您想要一个可以解析和转换 C、C++ 和 Java 的工具,您可以考虑我们的DMS Software Reengineering Toolkit。
DMS 解析一种语言的源代码,构建 AST,允许您对这些 AST 应用程序或模式直接重写,并且可以为修改后的程序重新生成有效的源文本。源到源的转换比程序转换更容易编写,因为您必须对树的结构了解得更少才能导航/修改它。
DMS 拥有各种方言的 Java、C、C99 和 C++11 的前端,使 DMS 能够解析和美化这些语言,并构建完整的符号表,这对于对代码进行任何严肃的转换都是绝对必要的。对于 C 和 Java,DMS 可以提供控制流、数据流和调用图,它们在许多分析和转换任务中都很有用。对于 C++,DMS 具有控制流分析和数据流分析。
您应该能够通过指定作为锁定习语的模式来找到“传统”锁定实现,然后应用转换来删除它们。