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用于从栈上获取一个值,并将一个变量初始化为这个值

  • 相关阅读:
    redis缓存数据
    VMware克隆服务器
    Java去掉Html标签的方法
    设计模式学习笔记:一、代理模式(动态代理实现)
    设计模式学习笔记:一、代理模式(动态代理步骤+举例)
    Python教程资源
    Lucene入门
    Oracle入门
    Sql入门
    将web工程署到Linux简单实现
  • 原文地址:https://www.cnblogs.com/50614090/p/2464823.html
Copyright © 2011-2022 走看看