-1

asm を c (アセンブリを C) に変換したいWeb でhttp://www.textmaestro.com/InfoEx_17_Convert_Assembly.htm (ページをお願いします) ページを見た後、検索と置換を使用してこの作業を簡単に実行しようとしましたC# での正規表現

私はコンピューター分野の学生ではないので、正規表現の専門家ではありません。私は 5 日間働いていますが、この時間の後、私はこれを行うことができないことを知っています.私は非常にコードを書きましたが、成功したサンプルプログラムはありません: 移動 r2,2; 変換: r1=1; r2=2; これを正しく行うのを手伝ってください

4

1 に答える 1

3

OPは、正規表現がソフトウェアの分析や翻訳を伴う問題の良い解決策ではないことを(痛々しく)学びました。文字列を処理することは、複雑な構造を持つテキストの文脈依存分析を構築することとは異なります。

人々はこの教訓を繰り返し学び続けます。正規表現を繰り返し使用して Post 書き換えシステムをシミュレートできることは事実であり、Turing 対応の Post システムは技術的に何でもできます。また、実際のチューリング マシン [または同等の Post システム] 用に非常に複雑なプログラムを作成することを誰も望んでおらず、さらに重要なことに、誰も作成できないことも事実です。これが、他のすべてのコンピューター言語とツールがある理由です。[OP が参照する TextMaestro システムは、まさにその Post システムになろうとしています。]

ただし、彼がやりたいタスクは、適切なツールであるプログラム変換システム (PTS)を使用して実行可能かつ実用的です。

特に、ある特定の PTS でこれがどのように行われたかを正確に説明するこのテクニカル ペーパーを参照する必要があります。ソーセージから豚を参照してください。FermaT 変換によるアセンブラーから C へのリエンジニアリング。このようなツールは実質的に、アセンブリ ソース コードからターゲット言語へのカスタム コンパイラであり、解析、名前 (ラベル) 解決、多くの場合、データ フロー分析、および複雑なコードの生成と最適化が含まれます。PTS が使用されるのは、そのようなコンパイラを比較的簡単に構築できるからです。このツールは、大規模なタスクのために、少なくとも Intel から C へのアセンブリ、およびメインフレーム (System 360/370/Z) から C へのアセンブリに使用されています。(私はこのツールとは何の関係もありませんが、作成者には大きな敬意を払っています)。

コメントの否定論者は、非常に制約された状況を除いて、これを行うことは不可能だと考えているようです. 確かに、イディオムに関してアセンブリ コードについて知れば知るほど、これはいくぶん簡単になりますが、この論文の技術的アプローチは、決して特定のコンパイラ出力に限定されるものではありません。また、真に難解なアセンブラー コード (特に自己変更コードやランタイム コード生成機能を持つコード) は、翻訳が非常に難しいことも事実です。

于 2012-12-09T12:48:32.650 に答える