c#IL指令解析
.module 模块
.assembly 程序集,.assembly伪指令指定了这个模块属于哪个程序集。模块只能包括⼀个单独的.assembly伪指令
.entrypoint 进⼊点在C#中,这个函数是Main,⼀个程序只能有⼀个开始点
.ctor 构造函数
.cctor 静态构造函数
newobj 创建⼀个新的对象,对应c#中的new,当new被⾸次调⽤时,会为代码和变量分配内存。但是之后,在new上的每⼀次调⽤,只会为变量分配新的内存
instance 实例函数,区别于静态函数
.maxstack: 这个伪指令指定了在⼀个⽅法被调⽤时,能够出现在计算栈上的元素的最⼤数量。
ret 函数结束指令
writeline函数
call void System.Console::WriteLine()// call 调⽤函数函数的返回类型(void)命名空间(System) 类 (Console) 函数名称 (WriteLine()) extends 派⽣
ldstr "xx" 把字符串放到栈上。Ldstr的名称是⽂本"load a string on the stack"的缩写
ldarg.0: 这是⼀个汇编器指令,它加载this指针或第0个参数的地址到执⾏栈上。每个⾮静态的或实例函数都传递了⼀个句柄,它表⽰调⽤这个函数的对象的变量位置。
这个句柄被称为this指针。this由ldarg.0表⽰。这个句柄总是被传递为每个实例函数的第1个参数。由于它总是被默认传递,所以在函数的参数列表中没有提及
pop 移出栈顶的任何元素
locals 创建局部变量
ldc.i4 i4就是从内存中获取4个字节,复制到栈,⽤于放置⼀个常量数字到栈上
stloc.0 获取位于栈顶的值,stloc⽤于从栈上获取⼀个值,并将⼀个变量初始化为这个值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论