Table of Contents

Class Comp

Namespace
ICSharpCode.Decompiler.IL
Assembly
ICSharpCode.Decompiler.dll

Comparison. The inputs must be both integers; or both floats; or both object references. Object references can only be compared for equality or inequality. Floating-point comparisons evaluate to 0 (false) when an input is NaN, except for 'NaN != NaN' which evaluates to 1 (true).

public sealed class Comp : BinaryInstruction, ILiftableInstruction
Inheritance
Comp
Implements
Inherited Members

Constructors

Comp(ComparisonKind, ComparisonLiftingKind, StackType, Sign, ILInstruction, ILInstruction)

public Comp(ComparisonKind kind, ComparisonLiftingKind lifting, StackType inputType, Sign sign, ILInstruction left, ILInstruction right)

Parameters

kind ComparisonKind
lifting ComparisonLiftingKind
inputType StackType
sign Sign
left ILInstruction
right ILInstruction

Comp(ComparisonKind, Sign, ILInstruction, ILInstruction)

public Comp(ComparisonKind kind, Sign sign, ILInstruction left, ILInstruction right)

Parameters

kind ComparisonKind
sign Sign
left ILInstruction
right ILInstruction

Fields

InputType

Gets the stack type of the comparison inputs. For lifted comparisons, this is the underlying input type.

public StackType InputType

Field Value

StackType

LiftingKind

public ComparisonLiftingKind LiftingKind

Field Value

ComparisonLiftingKind

Sign

If this is an integer comparison, specifies the sign used to interpret the integers.

public readonly Sign Sign

Field Value

Sign

Properties

IsLifted

Gets whether the instruction was lifted; that is, whether is accepts potentially nullable arguments.

public bool IsLifted { get; }

Property Value

bool

Kind

public ComparisonKind Kind { get; set; }

Property Value

ComparisonKind

ResultType

Gets the stack type of the value produced by this instruction.

public override StackType ResultType { get; }

Property Value

StackType

UnderlyingResultType

If the instruction is lifted and returns a nullable result, gets the underlying result type.

Note that not all lifted instructions return a nullable result: C# comparisons always return a bool!

public StackType UnderlyingResultType { get; }

Property Value

StackType

Methods

AcceptVisitor(ILVisitor)

Calls the Visit*-method on the visitor corresponding to the concrete type of this instruction.

public override void AcceptVisitor(ILVisitor visitor)

Parameters

visitor ILVisitor

AcceptVisitor<T>(ILVisitor<T>)

Calls the Visit*-method on the visitor corresponding to the concrete type of this instruction.

public override T AcceptVisitor<T>(ILVisitor<T> visitor)

Parameters

visitor ILVisitor<T>

Returns

T

Type Parameters

T

AcceptVisitor<C, T>(ILVisitor<C, T>, C)

Calls the Visit*-method on the visitor corresponding to the concrete type of this instruction.

public override T AcceptVisitor<C, T>(ILVisitor<C, T> visitor, C context)

Parameters

visitor ILVisitor<C, T>
context C

Returns

T

Type Parameters

C
T

LogicNot(ILInstruction)

public static Comp LogicNot(ILInstruction arg)

Parameters

arg ILInstruction

Returns

Comp

LogicNot(ILInstruction, bool)

public static Comp LogicNot(ILInstruction arg, bool isLifted)

Parameters

arg ILInstruction
isLifted bool

Returns

Comp

PerformMatch(ILInstruction?, ref Match)

protected override bool PerformMatch(ILInstruction? other, ref Match match)

Parameters

other ILInstruction
match Match

Returns

bool

WriteTo(ITextOutput, ILAstWritingOptions)

Writes the ILAst to the text output.

public override void WriteTo(ITextOutput output, ILAstWritingOptions options)

Parameters

output ITextOutput
options ILAstWritingOptions