简而言之,我正在寻找一种方法来编辑开源编译器或优化器,以将传统的锁实现更改为软件跨国内存事务。我有三种目标语言: C、C++和Java。一个想法可能是使用GCC,因为它现在有stm支持。问题是,我想不出一种方法来实现对GCJ转储的java字节码的这些更改。同样的问题也出现在llvm上。
我试图找到一个编译器或优化器,比如gcc或llvm,我可以很容易地利用它们来修改源代码或源代码的中间表示形式。
发布于 2012-05-22 08:07:26
如果你想要一个可以解析和转换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有控制流分析,数据流分析随之而来。
您应该能够通过指定作为锁习惯用法的模式来找到“传统的”锁实现,然后应用转换来删除它们。
https://stackoverflow.com/questions/10688936
复制相似问题