예제 #1
0
        public static SimOperand CreateMemoryAddress(int size, SimRegister baseRegister, SimRegister index, int scale, int displacement)
        {
            var op = new SimOperand(size);

            op.IsMemory     = true;
            op.Register     = baseRegister;
            op.Index        = index;
            op.Scale        = scale;
            op.Displacement = displacement;
            return(op);
        }
예제 #2
0
 private SimRegister AdjustRegisterSize(SimRegister register, int size)
 {
     if (size == 16)
     {
         if (register == CPU.EAX)
         {
             return(CPU.AX);
         }
         if (register == CPU.EBX)
         {
             return(CPU.BX);
         }
         if (register == CPU.ECX)
         {
             return(CPU.CX);
         }
         if (register == CPU.EDX)
         {
             return(CPU.DX);
         }
         if (register == CPU.ESI)
         {
             return(CPU.SI);
         }
         if (register == CPU.EDI)
         {
             return(CPU.DI);
         }
     }
     else if (size == 8)
     {
         if (register == CPU.EAX)
         {
             return(CPU.AL);
         }
         if (register == CPU.EBX)
         {
             return(CPU.BL);
         }
         if (register == CPU.ECX)
         {
             return(CPU.CL);
         }
         if (register == CPU.EDX)
         {
             return(CPU.DL);
         }
     }
     return(register);
 }
예제 #3
0
 public SimOperand(SimRegister register)
     : this(register.Size)
 {
     Register = register;
     IsRegister = true;
 }
예제 #4
0
 public static SimOperand CreateMemoryAddress(int size, SimRegister baseRegister, SimRegister index, int scale, int displacement)
 {
     var op = new SimOperand(size);
     op.IsMemory = true;
     op.Register = baseRegister;
     op.Index = index;
     op.Scale = scale;
     op.Displacement = displacement;
     return op;
 }
예제 #5
0
 public SimOperand(SimRegister register)
     : this(register.Size)
 {
     Register   = register;
     IsRegister = true;
 }