Wednesday, May 6, 2015

It can quickly find CIL instructions below Quick Daquan role. Name Description Add the two values


CIL opcode is for internal logic class or method will be described and the operation of the code, such as Add (add two values to calculate the results pushed on the stack), Ldarg (the argument (referenced sao carlos agora by the specified index value) is loaded into the on the stack) Ldloc.0 (to load a local variable index 0 to calculate the stack), etc. which are divided into the following five categories of operations :( data) push (ld), pop (st), operation, transfer, other ,
Shorthand table below we can easily remember CIL instructions: For example, we know that a ldloc.0 = ld (load) + loc (local) + 0 (0 position parameter) = 0 local variable load index. to the computing stack. The main operating operand range / condition operand type the full name of the operand Abbreviation sao carlos agora Meaning Abbreviation Meaning Abbreviation Full Name Full Name Full Name Meaning Acronym Meaning ld load operand sao carlos agora stack down to them, the equivalent of: push ax arg argument parameter operand values??. 0? zeroth argument * .1? The first argument .2? .3 second parameter? the third parameter .s xx (short) parameter xx a address of the operand address only .s xx, see ldarg. s loc local local variables see ldarg fld field field (global variables of the class) See ldarg xx xx field, eg:? ldfld xx c const constant .i4 int 4 bytes C # inside of int, other types such as short conversion through conv. m1 minus 1 -1 .0? 0 .1? 1 ...... .8 8 .s (short) followed by an integer value within a byte (signed)?? integer value followed by four bytes .i8 int 8 bytes C # inside long?? followed sao carlos agora by the eight-byte integer value .r4 real 4 bytes C # inside the float?? followed by a four-byte floating-point sao carlos agora value .r8 real 8 bytes C # inside ?? double followed by eight bytes floating-point value null null null (ie 0) st store the contents of the stack popped into operand, the equivalent of:?????? pop ax see ld ** conv convert numeric type conversion, using only pure conversion between numeric types, such as int / float, etc.??? .i1 int 1 bytes C # inside the sbyte??? .i2 int 2 bytes C # inside the short .i4 int 4 bytes C # inside The int .i8 int 8 bytes C # inside the long .r4 real 4 bytes C # inside the float .r8 real 8 bytes C # inside the double sao carlos agora .u4 uint 4 bytes C # inside the uint .u8 uint 8 bytes C # inside the ulong b / br branch conditional and unconditional jumps, the equivalent of:?? jmp / jxx label_jump br unconditional jump followed by a four-byte offset (signed) sao carlos agora .s (short) followed by a byte????? Offset (signed) false false value is zero when the jump??? See br true true value is not zero when the jump??? sao carlos agora b eq equal to equal??? ne not equal to unequal un unsigned or unordered freon good (for integers) or unordered sao carlos agora (for floating point) gt greater than greater than lt less than less than ge greater than or equal to not less than le less than or equal to or less call call call???? ? (non-virtual functions)???? virt virtual virtual function
It can quickly find CIL instructions below Quick Daquan role. Name Description Add the two values to calculate the results pushed on the stack. Add.Ovf sao carlos agora will add two integers, perform overflow checks, and the result is pushed on the computing stack. Add.Ovf.Un two unsigned integer values are added, perform overflow checks, and the result is pushed on the computing stack. And the two values calculated by bit "and" calculated and the results pushed on the stack. Arglist returns a pointer to the parameter list for the current method sao carlos agora of unmanaged pointer. Beq If the two values are equal, then control is transferred to the target instruction. Beq.S If the two values are equal, then control is transferred to the target instruction (short form). Bge if the first value is greater than or equal to the second value, it will transfer control to the target instruction. Bge.S if the first value is greater than or equal to the second sao carlos agora value, it will transfer control to the target instruction (short form). Bge.Un when comparing unsigned integer values or can not be sort of floating-point value, if the first value is greater than the second value, it will transfer control to the target instruction. Bge.Un.S when comparing unsigned integer values or can not be sort of floating-point value, if the first value is greater than the second value, it will transfer control to the target instruction (short form). Bgt If the first value is greater than the second value, it will transfer control sao carlos agora to the target instruction. Bgt.S If the first value is greater sao carlos agora than the second value, it will transfer control to the target instruction (short form). Bgt.Un when comparing unsigned integer values or can not be sort of floating-point value, if the first value is greater than the second value, it will transfer control to the target instruction. Bgt.Un.S when comparing unsigned integer values or can not be sort of floating-point value, if the first value is greater than the second value, it will transfer control to the target instruction (short form). Ble if the first value is less than or equal to the second value, it will transfer control to the target instruction. Ble.S if the first value is less than or equal to the second value, it will transfer control to the target instruction (short form). Ble.Un when comparing unsigned sao carlos agora integer values or can not be sort of floating-point value, if the first value is less than or equal to the second value, it will transfer control to the target instruction. Ble.Un.S when comparing unsigned integer values or can not be sort of floating-point values, if the first value is less than or equal to the second value, then control is transferred to the target instruction (short form). Blt If the first value is less than the second value, it will transfer control to the target instruction. Blt.S If the first value is less than the second value, it will transfer control to the target instruction (short form). Blt.Un when comparing unsigned integer values or can not be sort of floating-point value, if the first value is less than the second value, it will transfer control to the target instruction. Blt.Un.S when comparing unsigned integer values or can not be sort of floating-point value, if the first value is less than the second value, it will transfer control to the target sao carlos agora instruction (short form). Bne.Un when two unsigned integer values or can not be sort of floating-point values are not equal, control is transferred to the target instruction. Bne.Un.S when two unsigned integer values or can not be sort of floating-point values are not equal, control is transferred to the target instruction sao carlos agora (short form). Box convert the value class object reference (O type). Br unconditionally transfers control to the target instruction. Br.S unconditionally transfers control to the target instruction (short form). Break signals to the common language structure (CLI) to inform the debugger sao carlos agora has hit a breakpoint. Brfalse If the value is false, a null reference (Visual Basic of Nothing) or zero, then control is transferred to the target instruction. Brfalse.S If the value is false, a null reference or zero, then control is transferred to the target instruction. Brtrue If the value is true, non-empty, or non-zero, then control is transferred to the target instruction. Brtrue.S If the value is true, non-empty, or non-zero, then control is transferred to the target instruction (short form). Call method call operator indicated by the method described delivered. Calli calling convention described by a parameter called the method indicated in the computing stack (as a pointer to the entry point of the pointer). Callvirt late-bound method call to the object, and the return value is pushed onto the computing stack. Castclass try to pass an object reference is converted sao carlos agora to the specified class. Ceq compare two values. If the two values are equal, then the integer value 1 (int32) is pushed onto the computing stack; otherwise, 0 (int32) is pushed onto the computing stack. Cgt compare two values. If the first value is greater than the second sao carlos agora value, the integer value 1 (int32) is pushed onto the computing stack; on the contrary, will be 0 (int32) is pushed onto the computing stack. Cgt.Un compare two unsigned sao carlos agora or non-value order. If the first value is greater than the second value, the integer value 1 (int32) is pushed onto the computing stack; on the contrary, will be 0 (int32) is pushed onto the computing stack. Ckfinite If the value is not a finite number, raised ArithmeticException. Clt compare two values. If the first value is less than the second value, the integer value 1 (int32) is pushed onto the computing stack; on the contrary, will be 0 (int32) is pushed onto the computing stack. Clt.Un was no sign of the sort of value or not value1 and value2. If value1 is less than value2, then the integer value 1 (int32) is pushed onto the computing stack; on the contrary, will be 0 (int32) is pushed onto the computing stack. Constrained bound to be the type of virtual method calls. Conv.I value calculation will be located at the top of the stack is converted to native int. Value conversion Conv.I1 the top of the stack is located calculated int8, then extended (filler) as int32. Value conversion Conv.I2 the top of the stack is located calculated int16, then extended (filler) as int32. Conv.I4 located on top of the stack calculated value is converted to int32. Conv.I8 located on top of the stack calculated value is converted to int64. Conv.Ovf.I located on top of the stack to calculate the signed value is converted to signed native int, and trigger OverflowException at overflow. Conv.Ovf.I.Un located on top of the stack unsigned calculated value is converted to signed native int, and trigger OverflowException at overflow. Conv.Ovf.I1 located on top of the stack to calculate the signed value is converted to signed int8 and extends it to int32, and trigger OverflowException at overflow. Unsigned values converted Conv.Ovf.I1.Un will be located at the top of the stack is calculated signed int8 and extends it to int32, and trigger OverflowException at overflow. Conv.Ovf.I2 located on top of the stack to calculate the signed value is converted to signed int16 and extends it to int32, and trigger OverflowException at overflow. Conv.Ovf.I2.Un located on top of the stack of unsigned calculated value is converted sao carlos agora to a signed int16 and extends it to int32, and trigger OverflowException at overflow. Conv.Ovf.I4 located on top of the stack to calculate the signed value is converted to signed int32, and trigger OverflowException at overflow. Conv.Ovf.I4.Un located on top of the stack of unsigned calculated value is converted to a signed int32, and trigger OverflowException at overflow. Conv.Ovf.I8 located on top of the stack to calculate the signed value is converted to signed int64, and trigger OverflowException at overflow. Conv.Ovf.I8.Un located on top of the stack of unsigned calculated value is converted to a signed int64, and trigger OverflowException at overflow. Conv.Ovf.U located on top of the stack signed calculated value is converted to unsigned native int, and trigger OverflowException at overflow. Conv.Ovf.U.Un located calculated unsigned value on top of the stack is converted to unsigned native int, and trigger OverflowException at overflow. Conv.Ovf.U1 located on top of the stack signed calculated value is converted to unsigned int8 and extends it to int32, and trigger OverflowException at overflow. Unsigned values converted Conv.Ovf.U1.Un will be located in the top of the evaluation stack unsigned int8 and extends it to

No comments:

Post a Comment