1

IL_0000IL コードのこの記号 ( など) は何ですか? これは実際のメモリ ヒープ アドレスですか?

  IL_0000:  nop
  IL_0001:  ldstr      "here is something"
  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_000b:  nop
  IL_000c:  ldc.i4.s   18
  IL_000e:  newobj     instance void Proj.Stock::.ctor(int32)
  IL_0013:  stloc.0
  IL_0014:  ldstr      "another"
  IL_0019:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_001e:  nop
  IL_001f:  ldstr      "and even more"
  IL_0024:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_0029:  nop
  IL_002a:  ret
4

1 に答える 1

4

IL_0000:コードラベルです。これは単なる識別子であるため、ジャンプ位置をバイト数ではなく名前で簡単に参照できます。

Common Language Infrastructure (CLI) 標準ドキュメントを参照してください。 ECMA-335セクション II.5.4

II.5.4 ラベルとラベルのリスト

ラベルはプログラミングの便宜のために提供されています。これらは、メタデータでエンコードされた数値を表します。ラベルによって表される値は、通常、現在のメソッドの先頭からのバイト単位のオフセットですが、正確なエンコーディングは、論理メタデータ構造または CIL ストリームのどこでラベルが発生するかによって異なります。

...

于 2016-06-21T19:04:09.830 に答える