学习_你必须知道的.net2_第四章_一切从IL开始
IL体验中心:
1: .class表示是一个类 ; .public表示访问权限 ; auto表示程序加载时内存由CLR决定的,而不是程序本身
.ansi实现托管与非托管代码的无缝转换; .beforefieldinit为附加信息,在静态字段执行之行,可以在任何时候执行构造函数
.cil managed说明为IL代码,指示编译器编译为托管代码 ;maxstack执行.ctor可容纳最大个数
.IL_0000是一个标识代码行开头; ldarg.0即load argment表示装载第一个成员参数
call一般调用静态方法,因为静态方法是在编译时确定,callvirt表示调用实例方法
ret即return
entrypoint是CLR执行程序的入口点
ldstr即load string,表示将字符串压栈,字符串被移到stack顶部,CLR通过元数据表中获得文字常量来构造string对象
hidebysig表示如果作父类,则该方法不会被继承
locals用来声明局部变量
ld将变量从内存中装载到堆栈上面,而st开头对应存储指令
ldc将数字压入堆栈,ldind加载间接寻址,ldlen加载数组长度,ldelem加载元素
ldloc加载局部变量到堆栈,ldloca加到局部变量的地址到堆栈
ldfld/ldsfld将实例,静态字段加入堆栈
ldarg/ldarga装载成员参数/装载成员参数地址
.s表示取单个字节
brturn/br.s用于条件跳转
--------------------------------看的想吐了。。。这尼玛感觉是在搞汇编啊-------------------