[あすかぜ・ねっと]あすかぜ・ねっとその他 > CIL Opcode

CIL(MSIL) Opcode

参考: Standard ECMA-335 4th edition の 330ページ〜460ページ


Assembly Description
0x00 nop Do nothing
0x01 break Inform a debugger that a breakpoint has been reached.
0x02 ldarg.0 Load argument 0 onto stack
0x03 ldarg.1 Load argument 1 onto stack
0x04 ldarg.2 Load argument 2 onto stack
0x05 ldarg.3 Load argument 3 onto stack
0x06 ldloc.0 Load local variable 0 onto stack.
0x07 ldloc.1 Load local variable 1 onto stack.
0x08 ldloc.2 Load local variable 2 onto stack.
0x09 ldloc.3 Load local variable 3 onto stack.
0x0a stloc.0 Pop value from stack into local variable 0.
0x0b stloc.1 Pop value from stack into local variable 1.
0x0c stloc.2 Pop value from stack into local variable 2.
0x0d stloc.3 Pop value from stack into local variable 3.
0x0e ldarg.s Load argument numbered num onto stack, short form.
0x0f ldarga.s fetch the address of argument argNum, short form
0x10 starg.s Store a value to the argument numbered num, short form
0x11 ldloc.s Load local variable of index indx onto stack, short form.
0x12 ldloca.s Load address of local variable with index indx, short form
0x13 stloc.s Pop value from stack into local variable indx, short form.
0x14 ldnull Push null reference on the stack
0x15 ldc.i4.m1 Push -1 onto the stack as int32.
0x16 ldc.i4.0 Push 0 onto the stack as int32.
0x17 ldc.i4.1 Push 1 onto the stack as int32.
0x18 ldc.i4.2 Push 2 onto the stack as int32.
0x19 ldc.i4.3 Push 3 onto the stack as int32.
0x1a ldc.i4.4 Push 4 onto the stack as int32.
0x1b ldc.i4.5 Push 5 onto the stack as int32.
0x1c ldc.i4.6 Push 6 onto the stack as int32.
0x1d ldc.i4.7 Push 7 onto the stack as int32.
0x1e ldc.i4.8 Push 8 onto the stack as int32.
0x1f ldc.i4.s Push num onto the stack as int32, short form.
0x20 ldc.i4 Push num of type int32 onto the stack as int32.
0x21 ldc.i8 Push num of type int64 onto the stack as int64.
0x22 ldc.r4 Push num of type float32 onto the stack as F.
0x23 ldc.r8 Push num of type float64 onto the stack as F.
0x25 dup Duplicate value on the top of the stack
0x26 pop Pop a value from the stack
0x27 jmp Exit current method and jump to specified method
0x28 call Call method
0x29 calli Call method indicated on the stack with arguments described by callsitedescr.
0x2a ret Return from method, possibly returning a value
0x2b br.s Branch to target, short form
0x2c brfalse.s Branch to target if value is zero (false), short form
0x2d brtrue.s Branch to target if value is non-zero (true), short form
0x2e beq.s Branch to target if equal, short form
0x2f bge.s Branch to target if greater than or equal to, short form
0x30 bgt.s Branch to target if greater than, short form
0x31 ble.s Branch to target if less than or equal to, short form
0x32 blt.s Branch to target if less than, short form
0x33 bne.un.s Branch to target if unequal or unordered, short form
0x34 bge.un.s Branch to target if greater than or equal to (unsigned or unordered), short form
0x35 bgt.un.s Branch to target if greater than (unsigned or unordered), short form
0x36 ble.un.s Branch to target if less than or equal to (unsigned or unordered), short form
0x37 blt.un.s Branch to target if less than (unsigned or unordered), short form
0x38 br Branch to target
0x39 brfalse Branch to target if value is zero (false)
0x3a brtrue Branch to target if value is non-zero (true)
0x3b beq Branch to target if equal
0x3c bge Branch to target if greater than or equal to
0x3d bgt Branch to target if greater than
0x3e ble Branch to target if less than or equal to
0x3f blt Branch to target if less than
0x40 bne.un Branch to target if unequal or unordered
0x41 bge.un Branch to target if greater than or equal to (unsigned or unordered)
0x42 bgt.un Branch to target if greater than (unsigned or unordered)
0x43 ble.un Branch to target if less than or equal to (unsigned or unordered)
0x44 blt.un Branch to target if less than (unsigned or unordered)
0x45 switch jump to one of n values
0x46 ldind.i1 Indirect load value of type int8 as int32 on the stack.
0x47 ldind.u1 Indirect load value of type unsigned int8 as int32 on the stack.
0x48 ldind.i2 Indirect load value of type int16 as int32 on the stack.
0x49 ldind.u2 Indirect load value of type unsigned int16 as int32 on the stack.
0x4a ldind.i4 Indirect load value of type int32 as int32 on the stack.
0x4b ldind.u4 Indirect load value of type unsigned int32 as int32 on the stack.
0x4c ldind.i8 Indirect load value of type int64 as int64 on the stack.
0x4d ldind.i Indirect load value of type native int as native int on the stack
0x4e ldind.r4 Indirect load value of type float32 as F on the stack.
0x4f ldind.r8 Indirect load value of type float64 as F on the stack.
0x50 ldind.ref Indirect load value of type object ref as O on the stack.
0x51 stind.ref Store value of type object ref (type O) into memory at address
0x52 stind.i1 Store value of type int8 into memory at address
0x53 stind.i2 Store value of type int16 into memory at address
0x54 stind.i4 Store value of type int32 into memory at address
0x55 stind.i8 Store value of type int64 into memory at address
0x56 stind.r4 Store value of type float32 into memory at address
0x57 stind.r8 Store value of type float64 into memory at address
0x58 add Add two values, returning a new value
0x59 sub Subtract value2 from value1, returning a new value
0x5a mul Multiply values
0x5b div Divide two values to return a quotient or floating-point result
0x5c div.un Divide two values, unsigned, returning a quotient
0x5d rem Remainder of dividing value1 by value2
0x5e rem.un Remainder of unsigned dividing value1 by value2
0x5f and Bitwise AND of two integral values, returns an integral value
0x60 or Bitwise OR of two integer values, returns an integer.
0x61 xor Bitwise XOR of integer values, returns an integer
0x62 shl Shift an integer left (shifting in zeros), return an integer
0x63 shr Shift an integer right (shift in sign), return an integer
0x64 shr.un Shift an integer right (shift in zero), return an integer
0x65 neg Negate value
0x66 not Bitwise complement
0x67 conv.i1 Convert to int8, pushing int32 on stack
0x68 conv.i2 Convert to int16, pushing int32 on stack
0x69 conv.i4 Convert to int32, pushing int32 on stack
0x6a conv.i8 Convert to int64, pushing int64 on stack
0x6b conv.r4 Convert to float32, pushing F on stack
0x6c conv.r8 Convert to float64, pushing F on stack
0x6d conv.u4 Convert to unsigned int32, pushing int32 on stack
0x6e conv.u8 Convert to unsigned int64, pushing int64 on stack
0x6f callvirt Call a method associated with obj
0x70 cpobj Copy a value type from srcValObj to destValObj
0x71 ldobj Copy instance of value type classTok to the stack.
0x72 ldstr push a string object for the literal string
0x73 newobj Allocate an uninitialized object or value type and call ctor
0x74 castclass Cast obj to class
0x75 isinst test if obj is an instance of class, returning null or an instance of that
0x76 conv.r.un Convert unsigned integer to floating-point, pushing F on stack
0x79 unbox Extract the value type data from obj, its boxed representation
0x7a throw Throw an exception
0x7b ldfld Push the value of field of object, or value type, obj, onto the stack
0x7c ldflda Push the address of field of object obj on the stack
0x7d stfld Replace the value of field of the object obj with val
0x7e ldsfld Push the value of field on the stack
0x7f ldsflda Push the address of the static field, field, on the stack
0x80 stsfld Replace the value of field with val
0x81 stobj Store a value of type classTok from the stack into memory
0x82 conv.ovf.i1.un Convert unsigned to an int8 (on the stack as int32) and throw an exception on overflow
0x83 conv.ovf.i2.un Convert unsigned to an int16 (on the stack as int32) and throw an exception on overflow
0x84 conv.ovf.i4.un Convert unsigned to an int32 (on the stack as int32) and throw an exception on overflow
0x85 conv.ovf.i8.un Convert unsigned to an int64 (on the stack as int64) and throw an exception on overflow
0x86 conv.ovf.u1.un Convert unsigned to an unsigned int8 (on the stack as int32) and throw an exception on overflow
0x87 conv.ovf.u2.un Convert unsigned to an unsigned int16 (on the stack as int32) and throw an exception on overflow
0x88 conv.ovf.u4.un Convert unsigned to an unsigned int32 (on the stack as int32) and throw an exception on overflow
0x89 conv.ovf.u8.un Convert unsigned to an unsigned int64 (on the stack as int64) and throw an exception on overflow
0x8a conv.ovf.i.un Convert unsigned to a native int (on the stack as native int) and throw an exception on overflow
0x8b conv.ovf.u.un Convert unsigned to a native unsigned int (on the stack as native int) and throw an exception on overflow
0x8c box Convert valueType to a true object reference
0x8d newarr Create a new array with elements of type etype
0x8e ldlen Push the length (of type native unsigned int) of array on the stack
0x8f ldelema Load the address of element at index onto the top of the stack
0x90 ldelem.i1 Load the element with type int8 at index onto the top of the stack as an int32
0x91 ldelem.u1 Load the element with type unsigned int8 at index onto the top of the stack as an int32
0x92 ldelem.i2 Load the element with type int16 at index onto the top of the stack as an int32
0x93 ldelem.u2 Load the element with type unsigned int16 at index onto the top of the stack as an int32
0x94 ldelem.i4 Load the element with type int32 at index onto the top of the stack as an int32
0x95 ldelem.u4 Load the element with type unsigned int32 at index onto the top of the stack as an int32
0x96 ldelem.i8 Load the element with type int64 at index onto the top of the stack as an int64
0x97 ldelem.i Load the element with type native int at index onto the top of the stack as an native int
0x98 ldelem.r4 Load the element with type float32 at index onto the top of the stack as an F
0x99 ldelem.r8 Load the element with type float64 at index onto the top of the stack as an F
0x9a ldelem.ref Load the element of type object, at index onto the top of the stack as an O
0x9b stelem.i Replace array element at index with the i value on the stack
0x9c stelem.i1 Replace array element at index with the int8 value on the stack
0x9d stelem.i2 Replace array element at index with the int16 value on the stack
0x9e stelem.i4 Replace array element at index with the int32 value on the stack
0x9f stelem.i8 Replace array element at index with the int64 value on the stack
0xa0 stelem.r4 Replace array element at index with the float32 value on the stack
0xa1 stelem.r8 Replace array element at index with the float64 value on the stack
0xa2 stelem.ref Replace array element at index with the ref value on the stack
0xa3 ldelem Load the element at index onto the top of the stack
0xa4 stelem Replace array element at index with the value on the stack
0xa5 unbox.any Extract a value-type from obj, its boxed representation
0xb3 conv.ovf.i1 Convert to an int8 (on the stack as int32) and throw an exception on overflow
0xb4 conv.ovf.u1 Convert to a unsigned int8 (on the stack as int32) and throw an exception on overflow
0xb5 conv.ovf.i2 Convert to an int16 (on the stack as int32) and throw an exception on overflow
0xb6 conv.ovf.u2 Convert to a unsigned int16 (on the stack as int32) and throw an exception on overflow
0xb7 conv.ovf.i4 Convert to an int32 (on the stack as int32) and throw an exception on overflow
0xb8 conv.ovf.u4 Convert to a unsigned int32 (on the stack as int32) and throw an exception on overflow
0xb9 conv.ovf.i8 Convert to an int64 (on the stack as int64) and throw an exception on overflow
0xba conv.ovf.u8 Convert to a unsigned int64 (on the stack as int64) and throw an exception on overflow
0xc2 refanyval Push the address stored in a typed reference
0xc3 ckfinite Throw ArithmeticException if value is not a finite number
0xc6 mkrefany Push a typed reference to ptr of type class onto the stack
0xd0 ldtoken Convert metadata token to its runtime representation
0xd1 conv.u2 Convert to unsigned int16, pushing int32 on stack
0xd2 conv.u1 Convert to unsigned int8, pushing int32 on stack
0xd3 conv.i Convert to native int, pushing native int on stack
0xd4 conv.ovf.i Convert to an native int (on the stack as native int) and throw an exception on overflow
0xd5 conv.ovf.u Convert to a native unsigned int (on the stack as native int) and throw an exception on overflow
0xd6 add.ovf Add signed integer values with overflow check.
0xd7 add.ovf.un Add unsigned integer values with overflow check.
0xd8 mul.ovf Multiply signed integer values. Signed result must fit in same size
0xd9 mul.ovf.un Multiply unsigned integer values. Unsigned result must fit in same size
0xda sub.ovf Subtract native int from a native int. Signed result must fit in same size
0xdb sub.ovf.un Subtract native unsigned int from a native unsigned int. Unsigned result must fit in same size
0xdc endfinally End finally clause of an exception block
0xdd leave Exit a protected region of code.
0xde leave.s Exit a protected region of code, short form
0xdf stind.i Store value of type native int into memory at address
0xe0 conv.u Convert to native unsigned int, pushing native int on stack
0xfe 0x00 arglist Return argument list handle for the current method
0xfe 0x01 ceq Push 1 (of type int32) if value1 equals value2, else 0
0xfe 0x02 cgt Push 1 (of type int32) if value1 > value2, else 0
0xfe 0x03 cgt.un Push 1 (of type int32) if value1 > value2, unsigned or unordered, else 0
0xfe 0x04 clt Push 1 (of type int32) if value1 < value2, else 0
0xfe 0x05 clt.un Push 1 (of type int32) if value1 < value2, unsigned or unordered, else 0
0xfe 0x06 ldftn Push a pointer to a method
0xfe 0x07 ldvirtftn Push address of virtual method mthd on the stack
0xfe 0x09 ldarg Load argument numbered num onto stack.
0xfe 0x0a ldarga fetch the address of argument argNum.
0xfe 0x0b starg Store a value to the argument numbered num
0xfe 0x0c ldloc Load local variable of index indx onto stack.
0xfe 0x0d ldloca Load address of local variable with index indx
0xfe 0x0e stloc Pop value from stack into local variable indx.
0xfe 0x0f localloc Allocate space from the local memory pool.
0xfe 0x11 endfilter End filter clause of SEH exception handling
0xfe 0x12 unaligned. Subsequent pointer instruction may be unaligned
0xfe 0x13 volatile. Subsequent pointer reference is volatile
0xfe 0x14 tail. Subsequent call terminates current method
0xfe 0x15 initobj Initialize a value type
0xfe 0x17 cpblk Copy data from memory to memory
0xfe 0x18 initblk Set a block of memory to a given byte
0xfe 0x1a rethrow Rethrow the current exception
0xfe 0x1c sizeof Push the size, in bytes, of a value type as a unsigned int32
0xfe 0x1d refanytype Push the type token stored in a typed reference

更新履歴

Menu

Copyright (C) 2004-2009 asukaze, Some Rights Reserved.
Last Update: 2009/06/07
mail (at) asukaze.net