2010-12-01 16 views
2

私はC#でアセンブリコードの文字列を書いて、それをコンパイルして実行し結果を戻すためにいくつかのwin32 APIに送ってもらいたいのです。どのようにC#からアセンブリコードを書くのですか?

例:

string str = "MOV 1,2;XOR EBP,EBP"... 

が行うのは難しいように聞こえるが、任意の提案は参考になります。

+0

なぜこれが必要なのか尋ねてもよろしいですか?ドライバーや効率などのために? –

+0

これを行うことができれば、アセンブリで単純なソートアルゴリズムを手作りして、それを.net c#oneと比較しようとしています。 –

+0

Hm ... .Netバイトコードは、特定のアーキテクチャのJIT-edです。私はあなたがILに行くことができると知っていますが、マシンコードにコンパイルされたコードをスニッチできるかどうかは疑問です。次に、コードを見て、自分でそれを打ち負かすことができます。これはハードウェア固有のものになります。 –

答えて

5

私は&は、アセンブリの実行コンパイルする勝利のAPIがあります疑います。 おそらくあなたができることは、ファイルを書き、MASM(または最近のもの)を実行し、それをリンクして結果のプログラムを実行することです。 あなたがしようとしていることを想像することはできませんが、これはほぼすべての問題を解決しようとする最後の方法です!

ネイティブ&の管理コードを比較する場合は、多かれ少なかれ同じことをする2つのプログラムを作成してください。 .NETからアセンブリを生成する理由はありません。あなたはこれに適したツールを使用することができます。 MASM、デバッグなど

+0

+1しかし私はそれが最後の方法の後だと思います問題を解決しようとします。 – kenny

1

AFAIK WinAPIの一部として利用可能なアセンブラコンパイラはありません。サードパーティ製のコンパイラを使用する必要があります(また、プログラムを再配布する必要があります)。

ただし、.NETフレームワークの一部であるilasmを使用できます。 (しかし、それはIntel32コンパイラではないことを、そのソースがCILコードなので、xor ebp, ebpのような命令は動作しません注意してください。)

関連する問題