This documentation is archived and is not being maintained.

OpCodes.Add Field

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

[Visual Basic]
Public Shared ReadOnly Add As OpCode
public static readonly OpCode Add;
public: static OpCode Add;
public static var Add : OpCode;


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 natural int natural int
add int32 & &
add int32 * *
add int64 int64 int64
add natural int int32 natural int
add natural int natural int natural int
add natural int & &
add natural int * *
add F F F
add & int32 &
add & natural int &
add * int32 *
add * natural int *

The following Emit constructor overload can use the add opcode:

  • ILGenerator.Emit(OpCode)


Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

OpCodes Class | OpCodes Members | System.Reflection.Emit Namespace