- <member name="M:Microsoft.Cci.ILGenerator.Emit(Microsoft.Cci.OperationCode)"> <summary>Puts the specified instruction onto the stream of instructions.</summary> <param name="opcode">The Intermediate Language (IL) instruction to be put onto the stream.</param>
コンパイラ・インフラストラクチャときいて (スコア:2, 興味深い)
SUIF(http://suif.stanford.edu/ [stanford.edu])やTrimalan(http://www.trimaran.org/ [trimaran.org]…なぜか繋がらない)やCOINS(http://coins-project.is.titech.ac.jp/ [titech.ac.jp])みたいなのを想像したがかなり違うのね。
元ソースじゃなくて紹介記事読んだだけの印象だと
普通のプログラミングにおけるアセンブラの出力部分やリンカの仕事に当たる部分を作る際のCLR向け共通インターフェースに近いのかな?CodeDOMとの関係はない?のかな?
Re:コンパイラ・インフラストラクチャときいて (スコア:3, 参考になる)
その後、一応、リンク先http://ccimetadata.codeplex.com/ [codeplex.com]も覗いてきた感想:
PEファイル(ポータブル実行可能ファイル)の読み書き
PDBファイル(プログラム・データベース・ファイル)の読み書き
がAPIの中心みたいですね。確かに実行可能ファイルの生成や加工、デバッグ用情報(プロファイルとかにもつかえる)ファイルの生成や加工というのはコンパイラのインフラには違いないですか…。特にPEは普通の実行可能ファイルではないわけなので専用APIを整備する必要もあるんでしょう。
私も実際コンパイラ・フレームワーク/インフラストラクチャとしてCOINSを使っていますが、そういうものはパーサ→最適化→出力といったコンパイラ自身のフレームワークであって、その辺はない(外部プログラムとしてasやldを呼んでいる)ですからね。
AST風なCodeDOMといいMSはコンパイラ用に使えるデータ構造やAPIを徐々に整備して.Netコンパイラ・フレームワーク的なものを構成していくつもりなのかしらん?
Re:コンパイラ・インフラストラクチャときいて (スコア:3, 興味深い)
バイナリファイルをダウンロードすると、いくつかのDLLとそれに対応する
XMLファイルが添付されており、XMLファイルを確認するとどのような
インタフェースがあるのか確認することができます。
インタフェースとしては、PE(COFFの亜種)の読み書きや、このシンボル情報
(gcc -g で生成されstripで除去するアレですね)の操作・参照を行うための
ものが中心ですが、中にはMicrosoft.Cci.ILGeneratorというファイルもあり
このファイルには以下のようなコード生成に関するものも含まれていますので、
もう少しいろいろなことができそうです。
ドキュメントがもう少し整備されるとよいですね。
Re: (スコア:0)
つーと、monoのCecil [mono-project.com]みたいなもの?
#あれ?逆?
Re: (スコア:0)
PEファイル(ポータブル実行可能ファイル)のPって、ポータブルって意味だったんだ。
俺はてっきりプロテクトモードのPだと思ってたよ。
# と、どうでもいい知識を修正した