IL 语法

IL_0000 ——》 表示中间语言(IL)指令的标签或标识符,用于跟踪和引用指令

.entrypoint ——》 作为程序集的入口点方法
.locals init ([0] int32 v, [1] object o) ——》.locals init 指令用于指定局部变量的类型和索引,并可选地对其进行初始化
ldc.i4.5 ——》ldc 表示加载常量(load constant),i4 表示整数类型,5 表示要加载的整数值
stloc.0——》stloc 表示将值存储到本地变量中(store local),0 表示本地变量的索引
ldloc.0——》ldloc 表示加载本地变量的值(load local)
box 表示将值类型装箱(box)为引用类型
ldloca 表示加载本地变量的地址(load local address)
ldstr 表示加载字符串常量(load string)
unbox.any  [mscorlib]System.Int32 ——》将指定装箱的对象拆箱为 System.Int32 类型的原始值类型
box       [mscorlib]System.Int32 ——》将 System.Int32 的值类型转换为引用类型,即将其装箱
call string [mscorlib]System.String::Concat(object, object, object) ——》call 表示调用方法(call),string 表示方法的返回类型,[mscorlib]System.String 表示方法所属的类名和命名空间,Concat 表示方法的名称,(object, object, object) 表示方法的参数列表

newobj instance void System.Object::.ctor() ——》表示创建一个新的 System.Object 类型的实例,并调用其无参数构造函数。
callvirt     表示调用的是虚方法
pop    指令用于从操作数栈中移除一个值,并在执行后将其丢弃
nop    指令表示一个空操作,它不执行任何实际的操作。
ldstr    指令可以用于加载一个字符串常量,并将其推送(推入)到操作数栈上
ldarg    读取方法参数的值并进行操作
stfld     将值从操作数栈弹出,并将其存储到字段中
stsfld    将值从操作数栈弹出,并将其存储到静态字段中
ldarg.0      // 加载 this(当前对象)到操作数栈上
ldc.i4 42    // 加载整数值 42 到操作数栈上
stfld int32 SomeType::m_x  // 将操作数栈上的值存储到 m_x 字段中
posted @ 2023-11-18 16:15  Cody&  阅读(336)  评论(0)    收藏  举报