The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:
58 |
add |
Adds two numeric values, returning a new numeric value. |
The stack transitional behavior, in sequential order, is:
[The 'ordered' type of list has not been implemented in the ECMA stylesheet.]Overflow is not detected for integer operations (for proper overflow handling, see OpCodes.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.
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 ILGenerator.Emit(OpCode) method overload can use the add opcode:
ILGenerator.Emit(OpCode)