private void EmitCmp(Type type, OpCode cmp1, OpCode cmp2)
{
CodeEmitterLocal value1 = AllocTempLocal(type);
CodeEmitterLocal value2 = AllocTempLocal(type);
Emit(OpCodes.Stloc, value2);
Emit(OpCodes.Stloc, value1);
Emit(OpCodes.Ldloc, value1);
Emit(OpCodes.Ldloc, value2);
Emit(cmp1);
Emit(OpCodes.Ldloc, value1);
Emit(OpCodes.Ldloc, value2);
Emit(cmp2);
Emit(OpCodes.Sub);
ReleaseTempLocal(value2);
ReleaseTempLocal(value1);
}