zoukankan      html  css  js  c++  java
  • c# IL 指令解析


    .module     模块
    .assembly   程序集,.assembly伪指令指定了这个模块属于哪个程序集。模块只能包括一个单独的.assembly伪指令
    .entrypoint 进入点 在C#中,这个函数是Main,一个程序只能有一个开始点
    .ctor 构造函数
    .cctor 静态构造函数
    newobj 创建一个新的对象,对应c#中的new,当new被首次调用时,会为代码和变量分配内存。但是之后,在new上的每一次调用,只会为变量分配新的内存
    instance 实例函数,区别于静态函数
    .maxstack: 这个伪指令指定了在一个方法被调用时,能够出现在计算栈上的元素的最大数量。
    ret         函数结束指令
    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用于从栈上获取一个值,并将一个变量初始化为这个值

  • 相关阅读:
    AD读取Excel新建客户邮箱的测试环境部署有感
    云端转发邮箱
    AD活动目录操作软件设计节选
    14)
    13)
    行级,块级,空
    12)
    11)
    10)
    9)
  • 原文地址:https://www.cnblogs.com/50614090/p/2464823.html
Copyright © 2011-2022 走看看