This documentation is archived and is not being maintained.

OpCodes.Sub Field

Subtracts one value from another and pushes the result onto the evaluation stack.

[Visual Basic]
Public Shared ReadOnly Sub As OpCode
[C#]
public static readonly OpCode Sub;
[C++]
public: static OpCode Sub;
[JScript]
public static var Sub : OpCode;

Remarks

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
59 sub Subtracts one value from another, 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; value2 is subtracted from value1.
  4. The result is pushed onto the stack.

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

Integer subtraction 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 will be 0 rather than 256.

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

The following Emit constructor overload can use the sub opcode:

  • ILGenerator.Emit(OpCode)

Requirements

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

Show: