2010-12-11 10 views
0

CILを見ると、コンパイルされたCILにコードサイズが含まれていることがわかりました。それはコメントアウトされています。.NET CILコードサイズ

static void MakeACar() 
{ 
Car myCar = new Car(); 
} 

CIL:

.method public hidebysig static void MakeAObject() cil managed 
{ 
    //Code size 7 (0x7) 
    .maxstack 1 
    .locals init ([0] class SimpleGC.Car c) 
    IL_0000: newobj instance void SimpleGC.Car::.ctor() 
    IL_0005: stloc.O 
    IL_0006: ret 
} 

コードサイズが何を表しているん下記の

C#の例ですか?

答えて

2

これはバイトコード形式のCILが占めるバイト数にすぎません。

(あなたの例を見てみましょう:あなたは、最後の命令(retが)バイトから始まることがわかりますret is encoded as a one-byte opcodeので、バイトコードストリームは6 + 1 = 7バイトの合計長さを有して終わる6(IL_0006:)をオフセット。)

+0

どういう意味ですか?これは生成されたコードの実際のサイズか、マネージヒープに置かれる新しく作成されたCarクラスのサイズですか? – contactmatt

+0

生成された(組み立てられた)CILコードの実際のサイズ。例えば、ret命令は、バイトコード表現「2A」を有する。 stloc.0も1バイトを占め、newobj命令は1バイトで、その後に4バイトのmethoddefが続きます。 –

関連する問題