zoukankan      html  css  js  c++  java
  • MSIL指令速查表

    最初阅读IL的时候,很多指令会记不住,你把以下这两个表格打印下来,备在案前,可供速查!

    最初我阅读IL时,就是这么做的。后来我教别人反编译,都要别人先打印这份表格。

    自己查文档也可以获得一下资料。不过,或许我整理的这个表格,速查更方便!

    下载地址:https://files.cnblogs.com/jobs/msil.rar

    Base Instructions

     

    Instruction

    Description

    Stack Transition

    1

    add

    add two values, returning a new value

    …, value1, value2à…, result

    2

    add.ovf.<signed>

    add integer value with overflow check

    …, value1, value2à…, result

    3

    and

    bitwise AND

    …, value1, value2 à…, result

    4

    arglist

    get argument list

    à …, argListHandle

    5

    beq.<length>

    branch on equal

    …, value1, value2 à

    6

    bge.<length>

    branch on greater than or equal to

    …, value1, value2 à

    7

    bge.un.<length>

    branch on greater/equal, unsigned or unordered

    …, value1, value2 à

    8

    bgt.<length>

    branch on greater than

    …, value1, value2 à

    9

    bgt.un<length>

    branch on greater than, unsigned or unordered

    …, value1, value2 à

    10

    ble.<length>

    branch on less than or equal to

    …, value1, value2 à

    11

    ble..un<length>

    branch on less/equal, unsigned or unordered

    …, value1, value2 à

    12

    blt.<length>

    branch on less than

    …, value1, value2 à

    13

    blt.un.<length>

    branch on less than, unsigned or unordered

    …, value1, value2 à

    14

    bne.un<length>

    branch on not equal or unorded

    …, value1, value2 à

    15

    br.<length>

    unconditional branch

    …, à

    16

    break

    breakpoint instruction

    …, à

    17

    brfalse.<length>

    branch on false, null, or zero

    …, value à

    18

    brtrue.<length>

    branch on non-false or non-null

    …, value à

    19

    call

    call a method

    …, arg1, arg2 … argn à …, retVal (not always returned)

    20

    calli

    indirect method call

    …, arg1, arg2 … argn, ftn à …, retVal (not always returned)

    21

    ceq

    compare equal

    …, value1, value2à…, result

    22

    cgt

    compare greater than

    …, value1, value2à…, result

    23

    cgt.un

    compare greater than, unsigned or unordered

    …, value1, value2à…, result

    24

    ckfinite

    check for a finite real number

    …, value à …, value

    25

    clt

    compare less than

    …, value1, value2à…, result

    26

    clt.un

    compare less than, unsigned or unordered

    …, value1, value2à…, result

    27

    conv.<to type>

    data conversion

    …, value à …, result

    28

    conv.ovf<to type>

    data conversion with overflow detection

    …, value à …, result

    29

    conv.ovf.<to type>.un

    unsigned data conversion with overflow detection

    …, value à …, result

    30

    cpblk

    copy data from memory to memory

    …, destaddr, srcaddr, size à

    31

    div

    divide values

    …, value1, value2à…, result

    32

    div.un

    divide integer values, unsigned

    …, value1, value2à…, result

    33

    dup

    duplicate the top value of the stack

    …, value à …, value, value

    34

    endfilter

    end filter clause of SEH

    …, value à

    35

    endfinally

    end the finally or fault clause of exception block

    à

    36

    initblk

    initialize a block of memory to a value

    …, addr, value, size à

    37

    jmp

    jump to method

    à

    38

    ldarg.<length>

    load argument onto the stack

    à …, value

    39

    ldarga.<length>

    load an argument address

    …, à …, address of argument number argNum

    40

    ldc.<type>

    load numeric constant

    à …, num

    41

    ldftn

    load method pointer

    à …, ftn

    42

    ldind.<type>

    load value indirect onto the stack

    …, addr à …, value

    43

    ldloc

    load local variable onto the stack

    à …, value

    44

    ldloca.<length>

    load local variable address

    à …, address

    45

    ldnull

    load a null pointer

    à …, null value

    46

    leave.<length>

    exit a protected region of code

    …, à

    47

    localloc

    allocate space in the local dynamic memory pool

    size à address

    48

    mul

    multiply values

    …, value1, value2 à …, result

    49

    mul.ovf<type>

    multiply integer values with overflow check

    …, value1, value2 à …, result

    50

    neg

    negate

    …, value à …, result

    51

    nop

    no operation

    …, à …,

    52

    not

    bitwise complement

    …, value à …, result

    53

    or

    bitwise OR

    …, value1, value2 à …, result

    54

    pop

    remove the top element of the stack

    …, value à

    55

    rem

    compute the remainder

    …, value1, value2 à …, result

    56

    rem.un

    compute integer remainder, unsigned

    …, value1, value2 à …, result

    57

    ret

    return from method

    retVal on callee evaluation stack (not always present) à

    …, retVal on caller evaluation stack (not always present)

    58

    shl

    shift integer left

    …, value, shiftAmount à …, result

    59

    shr

    shift integer right

    …, value, shiftAmount à …, result

    60

    shr.un

    shift integer right, unsigned

    …, value, shiftAmount à …, result

    61

    starg.<length>

    store a value in an argument slot

    …, value à …,

    62

    stind.<type>

    store value indirect from stack

    …, addr, val à

    63

    stloc

    pop value from stack to local variable

    …, value à

    64

    sub

    substract numeric values

    …, value1, value2 à …, result

    65

    sub.ovf.<type>

    substract integer values, checking for overflow

    …, value1, value2 à …, result

    66

    switch

    table switch on value

    …, value à …,

    67

    xor

    bitwise XOR

    ..., value1, value2 à ..., result


    Object Model Instructions

     

    Instruction

    Description

    Stack Transition

    1

    box

    convert value type to object reference

    …, valueType à …, obj

    2

    callvirt

    call a method associated, a runtime, with an object

    …, obj, arg1, … argN à …, returnVal (not always returned)

    3

    cast class

    cast an object to a class

    …, obj à …, obj2

    4

    cpobj

    copy a value type

    …, destValObj, srcValObj à …,

    5

    initobj

    Initialize a value type

    …,addrOfValObj à …,

    6

    isinst

    test if an object is is an instance of a class or interface

    …, obj à …, result

    7

    ldelem.<type>

    load an element fo an array

    …, array, index à …, value

    8

    ldelema

    load address of an element of an array

    …, array, index à …, address

    9

    ldfld

    load field of an object

    …, obj à …, value

    10

    ldflda

    load field address

    …, obj à …, address

    11

    ldlen

    load the length of an array

    …, array à …, length

    12

    ldobj

    copy value type to the stack

    …, addrOfValObj à …, valObj

    13

    ldsfld

    load static field of a class

    …, à …, value

    14

    ldsflda

    load static field address

    …, à …, address

    15

    ldstr

    load a literal string

    …, à …, string

    16

    ldtoken

    load the runtime representation of metadata token

    à …, RuntimeHandle

    17

    ldvirtfn

    load a virtual method pointer

    … object à …, ftn

    18

    mkrefany

    push a typed reference on the stack

    …, ptr à …, typedRef

    19

    newarr

    Create a zero-base, on-dimensional array

    …, numElems à …, array

    20

    newobj

    create a new object

    …, arg1, … argN à …, obj

    21

    refanytype

    load the type out of a typed reference

    …, TypedRef à …, type

    22

    refanyval

    load the address out of a typed reference

    …, TypedRef à …, address

    23

    rethrow

    rethrow the current exception

    …, à …,

    24

    sizeof

    load the size in bytes of a value type

    …, à …, size (4 bytes, unsigned)

    25

    stelem.<type>

    store an element of an array

    …, array, index, value à …,

    26

    stfld

    store into a field of an object

    …, obj, value à …,

    27

    stobj

    store a value type from the stack into memory

    …, addr, valObj à …,

    28

    stsfld

    store a static field of class

    …, val à …,

    29

    throw

    throw an exception

    …, object à …,

    30

    unbox

    convert boxed value type to its raw form

     

  • 相关阅读:
    activity(工作流)初步学习记录
    npm install出现npm ERR! write after end解决方法
    npm ERR! Cannot read property 'match' of undefined 错误处理
    gist.github.com 被墙无法访问解决办法
    AS SSD Benchmark固态硬盘检测工具
    VSCode 云同步扩展设置 Settings Sync 插件
    window系统不显示预览图片的处理方法
    VsCode如何同时打开多个项目
    win10的开机启动文件夹在哪及开机自动启动软件
    Java环境配置和tomcat环境配置
  • 原文地址:https://www.cnblogs.com/jobs/p/26022.html
Copyright © 2011-2022 走看看