示例#1
0
文件: Intelx86.cs 项目: AxFab/amy
 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;
 }
示例#2
0
文件: Intelx86.cs 项目: AxFab/amy
        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;
        }