예제 #1
0
        public void Mov32(InstructionNode node)
        {
            if (!node.Operand1.IsConstantZero)
            {
                return;
            }

            if (OptimizationStage.AreStatusFlagsUsed(node.Next, true, true, true, true, true) == TriState.No)
            {
                node.SetInstruction(X86.Xor32, node.Result, node.Result, node.Result);
                ZeroToXorSubstitutionCount++;
            }
        }
예제 #2
0
        public void Mov32(Context context)
        {
            if (!context.Operand1.IsConstantZero)
            {
                return;
            }

            if (OptimizationStage.AreStatusFlagsUsed(context.Node.Next, true, true, true, true, true) == TriState.No)
            {
                context.SetInstruction(X86.Xor32, context.Result, context.Result, context.Result);
                ZeroToXorSubstitutionCount++;
            }
        }