Пример #1
0
        private void ProcessOverrideOperand(ref x86Instruction instruction)
        {
            x86OperandType operandType = instruction.OpCode.GetOverrideOperandType();

            if (operandType.HasFlag(x86OperandType.ForceDwordPointer))
            {
                if (instruction.operand2 != null)
                {
                    if (instruction.operand2.Value is uint)
                    {
                        instruction.operand2 = CreatePtr((uint)instruction.operand2.Value, OperandType.DwordPointer);
                    }
                    else
                    {
                        instruction.operand2.ValueType = OperandType.DwordPointer;
                    }
                }
                else
                if (instruction.operand1.Value is uint)
                {
                    instruction.operand1 = CreatePtr((uint)instruction.operand1.Value, OperandType.DwordPointer);
                }
                else
                {
                    instruction.operand1.ValueType = OperandType.DwordPointer;
                }
            }
            if (operandType.HasFlag(x86OperandType.OverrideOperandOrder))
            {
                Operand temp = instruction.operand1;
                instruction.operand1 = instruction.operand2;
                instruction.operand2 = temp;
            }
        }
Пример #2
0
 internal x86OpCode(string name, byte[] opcodebytes, int operandlength, x86OperandType type, int variableByteIndex)
 {
     this._name = name;
     this._originalBytes = opcodebytes;
     this._opcodeBytes = opcodebytes;
     this._operandType = type;
     this._operandLength = operandlength;
     this._variableByteIndex = variableByteIndex;
 }
Пример #3
0
 internal x86OpCode(string name, byte[] opcodebytes, int operandlength, x86OperandType type)
 {
     this._name          = name;
     this._originalBytes = opcodebytes;
     this._opcodeBytes   = opcodebytes;
     this._operandType   = type;
     this._operandLength = operandlength;
     _variableByteIndex  = -1;
 }
Пример #4
0
 internal x86OpCode(string name, byte[] opcodebytes, int operandlength, x86OperandType type, int variableByteIndex)
 {
     this.name              = name;
     this.originalbytes     = opcodebytes;
     this.opcodebytes       = opcodebytes;
     this.operandtype       = type;
     this.operandlength     = operandlength;
     this.variableByteIndex = variableByteIndex;
 }
Пример #5
0
 internal x86OpCode(string name, byte[] opcodebytes, int operandlength, x86OperandType type)
 {
     this.name = name;
     this.originalbytes = opcodebytes;
     this.opcodebytes = opcodebytes;
     this.operandtype = type;
     this.operandlength = operandlength;
     variableByteIndex = -1;
 }