Share via

OpCodes.Add Field


Adds two values and pushes the result onto the evaluation stack.

public: static initonly System::Reflection::Emit::OpCode Add;
public static readonly System.Reflection.Emit.OpCode Add;
 staticval mutable Add : System.Reflection.Emit.OpCode
Public Shared ReadOnly Add As OpCode 

Field Value


The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

Format Assembly Format Description
58 add Adds two numeric values, returning a new numeric value.

The stack transitional behavior, in sequential order, is:

  1. value1 is pushed onto the stack.

  2. value2 is pushed onto the stack.

  3. value2 and value1 are popped from the stack; value1 is added to value2.

  4. The result is pushed onto the stack.

Overflow is not detected for integer operations (for proper overflow handling, see Add_Ovf).

Integer addition wraps, rather than saturates. For example, assuming 8-bit integers where value1 is set to 255 and value2 is set to 1, the wrapped result is 0 rather than 256.

Floating-point overflow returns +inf (PositiveInfinity) or -inf (NegativeInfinity).

The acceptable operand types and their corresponding result data type are listed in the table below. If there is no entry for a particular type combination (for example, int32 and float; int32 and int64), it is an invalid Microsoft Intermediate Language (MSIL) and generates an error.

operand value1 type value2 type result type
add int32 int32 int32
add int32 native int native int
add int32 & &
add int32 * *
add int64 int64 int64
add native int int32 native int
add native int native int native int
add native int & &
add native int * *
add F F F
add & int32 &
add & native int &
add * int32 *
add * native int *

The following Emit method overload can use the add opcode:

Applies to