在实现DTE的过程中难以避免的读或写IL,《CIL Programming》这本书给我带来很大帮助。在此记录下一些知识。
堆栈信息基础(Basic Stack Information)
四个数字类型: int32, int64, native int, F
一个对象引用类型: 0
两个指针类型: native int, &
传递参数(Passing Arguments)
.class SimpleType { .method public instance int64 SomeMethod(int32 arg1, float64 arg2, class [System.Windows.Forms]System.Windows.Forms.Form thisForm) {} }
这个例子中
int32
float64
class [System.Windows.Forms]System.Windows.Forms.Form
都是对参数的描述,前两个是primitive type,最后一个是引用类型。
有三个可以用来修饰参数的属性in,out,opt.
in – 调用方(caller)负责将已初始化的变量作为参数传入方法。
out – 被调用方(callee)负责在方法结束之前,将参数设置成正确的类型。
opt – 表示参数是可选的,需用.param 指令(directive)