2

一言で言えば、私はオープンソースのコンパイラまたはオプティマイザを編集して、従来のロックの実装をソフトウェアの多国籍メモリトランザクションに変更する方法を探しています。私は3つのターゲット言語、C、C ++、およびJavaを持っています。1つのアイデアは、GCCがstmをサポートするようになったため、GCCを使用することです。問題は、GCJによってダンプされたJavaバイトコードにこれらの変更を実装する方法が考えられないことです。llvmでも同じ問題が発生します。

tldr; ソースコードまたはソースコードの中間表現を簡単に変更できるgccやllvmなどのコンパイラまたはオプティマイザを見つけようとしています。

4

1 に答える 1

1

C、C ++、およびJavaを解析および変換できるツールが必要な場合は、DMS SoftwareReengineeringToolkitを検討してください。

DMSは、言語のソースコードを解析し、ASTを構築し、それらのASTに手続き型またはパターン直接の書き換えを適用できるようにし、変更されたプログラムの有効なソーステキストを再生成できます。ソースからソースへの変換は、手続き型の変換よりもはるかに簡単に記述できます。これは、ツリーをナビゲート/変更するためにツリーの構造について知る必要がはるかに少ないためです。

DMSには、Java、C、C99、およびC ++ 11のフロントエンドがすべてさまざまな方言であり、DMSがこれらの言語を解析およびプリティプリントし、完全なシンボルテーブルを構築できるようにします。これは、コードで深刻な変換を行うために絶対に不可欠です。CおよびJavaの場合、DMSは制御フロー、データフロー、およびコールグラフを提供できます。これらは、多くの分析および変換タスクで役立ちます。C ++の場合、DMSには制御フロー分析があり、データフロー分析が行われます。

ロックのイディオムであるパターンを指定して「従来の」ロックの実装を見つけ、変換を適用してそれらを削除できるはずです。

于 2012-05-22T00:07:25.673 に答える