Exemple #1
0
 public static OpCode FromName(string op, Reg32 op1, Xmm op2)
 {
     byte b;
     switch (op)
     {
         case "movd":
             b = 0x7e;
             break;
         default:
             throw new Exception("invalid operator: " + op);
     }
     return new OpCode(new byte[] { 0x66, 0x0f, b, (byte)(0xc0 + (((int)op2) << 3) + op1) });
 }
Exemple #2
0
 public static OpCode FromName(string op, Xmm op1, Addr32 op2)
 {
     byte b1 = 0x66, b2;
     if (op == "movq" || op == "movdqu") b1 = 0xf3;
     switch (op)
     {
         case "movd":
             b2 = 0x6e;
             break;
         default:
             b2 = GetCode(op);
             break;
     }
     return new OpCode(new byte[] { b1, 0x0f, b2 }, null, new Addr32(op2, (byte)op1));
 }
Exemple #3
0
 public static OpCode FromName(string op, Xmm op1, byte op2)
 {
     byte b1 = 0, b2 = 0;
     switch (op)
     {
         case "psllw":
         case "psrlw":
         case "psraw":
             b1 = 0x71;
             break;
         case "pslld":
         case "psrld":
         case "psrad":
             b1 = 0x72;
             break;
         case "psllq":
         case "psrlq":
             b1 = 0x73;
             break;
     }
     switch (op)
     {
         case "psllw":
         case "pslld":
         case "psllq":
             b2 = 0xf0;
             break;
         case "psrlw":
         case "psrld":
         case "psrlq":
             b2 = 0xd0;
             break;
         case "psraw":
         case "psrad":
             b2 = 0xe0;
             break;
     }
     if (b1 == 0 || b2 == 0)
         throw new Exception("invalid operator: " + op);
     return new OpCode(new byte[] { 0x66, 0x0f, b1, (byte)(b2 + op1) }, op2);
 }
Exemple #4
0
 public static OpCode FromName(string op, Addr32 op1, Xmm op2)
 {
     byte b1 = 0x66, b2;
     if (op == "movdqu") b1 = 0xf3;
     switch (op)
     {
         case "movd":
             b2 = 0x7e;
             break;
         case "movq":
             b2 = 0xd6;
             break;
         case "movdqa":
         case "movdqu":
             b2 = 0x7f;
             break;
         default:
             throw new Exception("invalid operator: " + op);
     }
     return new OpCode(new byte[] { b1, 0x0f, b2 }, null, new Addr32(op1, (byte)op2));
 }
Exemple #5
0
 public static OpCode PAddQ(Xmm op1, Xmm op2)
 {
     return FromName("paddq", op1, op2);
 }
Exemple #6
0
 public static OpCode MovD(Reg32 op1, Xmm op2)
 {
     return FromName("movd", op1, op2);
 }
Exemple #7
0
 public static OpCode PSRAW(Xmm op1, Addr32 op2)
 {
     return FromName("psraw", op1, op2);
 }
Exemple #8
0
 public static OpCode PUnpckLDQ(Xmm op1, Xmm op2)
 {
     return FromName("punpckldq", op1, op2);
 }
Exemple #9
0
 public static OpCode MovDQA(Xmm op1, Addr32 op2)
 {
     return FromName("movdqa", op1, op2);
 }
Exemple #10
0
 public static OpCode PSubW(Xmm op1, Addr32 op2)
 {
     return FromName("psubw", op1, op2);
 }
Exemple #11
0
 public static OpCode PUnpckHWD(Xmm op1, Xmm op2)
 {
     return FromName("punpckhwd", op1, op2);
 }
Exemple #12
0
 public static OpCode PSRLD(Xmm op1, Xmm op2)
 {
     return FromName("psrld", op1, op2);
 }
Exemple #13
0
 public static OpCode PSRLW(Xmm op1, byte op2)
 {
     return FromName("psrlw", op1, op2);
 }
Exemple #14
0
 public static OpCode PackUSWB(Xmm op1, Addr32 op2)
 {
     return FromName("packuswb", op1, op2);
 }
Exemple #15
0
 public static OpCode PackSSWB(Xmm op1, Xmm op2)
 {
     return FromName("packsswb", op1, op2);
 }
Exemple #16
0
 public static OpCode PackSSDW(Xmm op1, Addr32 op2)
 {
     return FromName("packssdw", op1, op2);
 }
Exemple #17
0
 public static OpCode MovDQU(Addr32 op1, Xmm op2)
 {
     return FromName("movdqu", op1, op2);
 }
Exemple #18
0
 public static OpCode MovQ(Addr32 op1, Xmm op2)
 {
     return FromName("movq", op1, op2);
 }
Exemple #19
0
 public static OpCode PSRLQ(Xmm op1, Addr32 op2)
 {
     return FromName("psrlq", op1, op2);
 }
Exemple #20
0
 public static OpCode PAddW(Xmm op1, Addr32 op2)
 {
     return FromName("paddw", op1, op2);
 }
Exemple #21
0
 public static OpCode PSubQ(Xmm op1, Xmm op2)
 {
     return FromName("psubq", op1, op2);
 }
Exemple #22
0
 public static OpCode PMulHW(Xmm op1, Xmm op2)
 {
     return FromName("pmulhw", op1, op2);
 }
Exemple #23
0
 public static OpCode PUnpckHDQ(Xmm op1, Addr32 op2)
 {
     return FromName("punpckhdq", op1, op2);
 }
Exemple #24
0
 public static OpCode PMulLW(Xmm op1, Addr32 op2)
 {
     return FromName("pmullw", op1, op2);
 }
Exemple #25
0
 public static OpCode PUnpckLBW(Xmm op1, Xmm op2)
 {
     return FromName("punpcklbw", op1, op2);
 }
Exemple #26
0
 public static OpCode PSLLQ(Xmm op1, byte op2)
 {
     return FromName("psllq", op1, op2);
 }
Exemple #27
0
 public static OpCode PUnpckLWD(Xmm op1, Addr32 op2)
 {
     return FromName("punpcklwd", op1, op2);
 }
Exemple #28
0
 public static OpCode PSLLW(Xmm op1, Addr32 op2)
 {
     return FromName("psllw", op1, op2);
 }
Exemple #29
0
 public static OpCode PSRAD(Xmm op1, byte op2)
 {
     return FromName("psrad", op1, op2);
 }
Exemple #30
0
 public static OpCode FromName(string op, Xmm op1, Xmm op2)
 {
     byte b1 = 0x66, b2 = GetCode(op);
     if (op == "movq" || op == "movdqu") b1 = 0xf3;
     return new OpCode(new byte[] { b1, 0x0f, b2, (byte)(0xc0 + (((int)op1) << 3) + op2) });
 }