public x86Operator(Intelx86Opcode opcode, OperatorSize size, Intelx86Register segment) { int count = (opcode < Intelx86Opcode.Push ? 0 : (opcode < Intelx86Opcode.Add ? 1 : (opcode < Intelx86Opcode.Outbound ? 2 : 3))); this.OperatorCode = opcode; this.OperatorName = opcode.ToString(); this.Operands = new x86Operand[count]; this.DataSize = size; this.Segment = segment; }
private x86Operator Read_Segment(Intelx86Register segment) { x86Operator _Operator; _Operator = Read(); if (_Operator.OperandCount >= 1 && (_Operator.Source.Type == OperandType.Address || _Operator.Source.Type == OperandType.Memory || _Operator.Source.Type == OperandType.MemoryFull || _Operator.Source.Type == OperandType.MemoryOffset || _Operator.Source.Type == OperandType.MemoryScale)) _Operator.SegmentSrc = segment; else if (_Operator.OperandCount >= 2 && (_Operator.Destination.Type == OperandType.Address || _Operator.Destination.Type == OperandType.Memory || _Operator.Destination.Type == OperandType.MemoryFull || _Operator.Destination.Type == OperandType.MemoryOffset || _Operator.Destination.Type == OperandType.MemoryScale)) _Operator.Segment = segment; else { _Operator = new x86Operator(Intelx86Opcode.Segment); _Operator.Segment = segment; Length = 1; } //byte c = Buffer[X]; //if ((c & 7) >= 4) //{ // _Operator = new x86Operator(Intelx86Opcode.Segment); // _Operator.Segment = segment; //} //else //{ // _Operator = Read(); // if ((c & 0x2) == 0) // _Operator.Segment = segment; // else // _Operator.SegmentSrc = segment; //} return _Operator; }