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

     

  • 相关阅读:
    Java Web表达式注入
    Mysql:The Federated Storage Engine:联合(联盟)存储引擎:【远程连接】服务器引擎
    Mysql:16.11.1 Pluggable Storage Engine Architecture
    Mysql:Server Logs:mysqld服务器的各种日志
    Mysql:InnoDB Table Compression and InnoDB Page Compression:适用于InnoDB的:表压缩 & 页压缩
    Mysql:Redo Log
    kubectl相关指令
    使用alias简化kubectl输入
    使用Minikube运行一个本地单节点Kubernetes集群(阿里云)
    Javascript去掉base64中的回车换行
  • 原文地址:https://www.cnblogs.com/jobs/p/26022.html
Copyright © 2011-2022 走看看