baobao
10/31/2018 - 5:41 AM

helloworld.IL

// https://sharplab.io/#v2:EYLgHgbALANALiAlgGwD4AEAMACdBGAbgFgAodAJmwGEALAQwCcAHbUgb1Oy9wGZcpsAWTqIAdgAoAlKxLdsHWXO6duAX1KqgA==

// 何も書かなくても自動生成されるセクション(よくわからないので一旦無視)
.class private auto ansi '<Module>'
{
}

// クラス定義 
.class private auto ansi beforefieldinit Charp extends [mscorlib]System.Object
{
  .method public hidebysig instance void Main () cil managed 
  {
    .maxstack 8
    IL_0000: ret
  }

  // コンストラクタを生成していないので、自動で生成されるコンストラクタ .ctorがそれ
  .method public hidebysig specialname rtspecialname instance void .ctor () cil managed 
  {
    .maxstack 8

    // ldarg.0 静的メソッドではない場合自分自身の参照をスタックに読み込む(load argument 0)の意
    // もし静的メソッドだった場合はldarg.0は第1引数のことを指す
    IL_0000: ldarg.0
    
    // call メソッド呼び出し
    // 親クラスのObjectのコンストラクタを呼び出している
    IL_0001: call instance void [mscorlib]System.Object::.ctor()
    
    // メソッド呼び出しに戻る(return)の意
    IL_0006: ret
  }
}