• C# IL语法


    操作码                                           作用

    add, sub, mul, div, rem                   用于两个数加减乘除求模

    add, or, not, xor                            用于在两个值上进行二进制操作

    ceq, cgt, clt                                   用不同的方法比较两个在栈上的值,ceq:是否相等;cgt:是否大约;clt:是否小于

    box, unbox                                   在引用类型和值类型之间转换

    ret                                                退出方法和返回一个值

    beq, bgt, ble, blt, switch                 控制方法中的条件分支,beg:如果相等就中止到代码标签;bgt:如果大于就中止到代码标签;

                                                       ble:如果小于等于就中止到代码标签;blt:如果小于就中止到代码标签;

                                                       所有的分支控制操作码都需要给出一个CIL代码标签作为条件为真的跳转目的

    br.s                                             (无条件)中止到代码标签

    call                                               调用一个成员

    nearer, newobj                              在内存中创建一个新的数组或新的对象类型

     

    主要的入栈CIL操作码  (ld 加载)

    操作码                                           作用

    ldarg (及多个变化形式)                     加载方法的参数到栈中。除了泛型ldarg(需要一个索引作为参数),还有后其他很多的变化形式。

                                                       eg. 有个数字后缀的ldarg操作码来指定需要加载的参数。同时还有很多ldarg的变化形式允许加载

                                                       指定的数据类型(ldarg_i4, 加载int32)和值(ldarg_i4_5 加载一个值为5的int32)

    ldc (及多个变化形式)                      加载一个常数到栈中

    ldfld (及多个变化形式)                      加载一个对象实例的成员到栈中

    ldloc (及多个变化形式)                      加载一个本地变量到栈中

    ldobj                                            获得一个堆对象的所有数据,并将它们放置到栈中

    ldstr                                             加载一个字符串数据到栈中

     

    主要的弹出栈操作码 (st 存储)

    操作码                                           作用

    pop                                              删除当前栈顶的值,但是并不影响存储的值

    starg                                            存储栈顶的值到给出方法的参数,根据索引确定这个参数

    stloc (及多个变化形式)                      弹出当前栈顶的值并存储在一个本地变量列表中,根据所以确定这个参数

    stobj                                            从栈中复制一个特定的类型到指定的内存地址

    stfld                                             用从栈中获得的值替换对象成员的值


    作者:追梦网络
    出处:http://www.cnblogs.com/dream844/
    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    敏捷之旅--携程境外租车团队敏捷实践
    (一)LoadRunner安装
    性能测试,相关术语解析
    Newtonsoft.Json
    主流浏览器基于哪些内核?
    火狐浏览器与谷歌浏览器区别在哪里?
    带宽计算-大B与小b的区别
    loadrunner11录制不成功解决方法
    代码中的事务约束
    IOC框架Ninject实践总结
  • 原文地址:https://www.cnblogs.com/dream844/p/3094404.html
Copyright © 2020-2023  润新知