示例#1
0
文件: SSE2.cs 项目: bencz/CoffLib
 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) });
 }
示例#2
0
文件: SSE2.cs 项目: bencz/CoffLib
 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));
 }
示例#3
0
文件: SSE2.cs 项目: bencz/CoffLib
 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);
 }
示例#4
0
文件: SSE2.cs 项目: bencz/CoffLib
 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));
 }
示例#5
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PAddQ(Xmm op1, Xmm op2)
 {
     return FromName("paddq", op1, op2);
 }
示例#6
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode MovD(Reg32 op1, Xmm op2)
 {
     return FromName("movd", op1, op2);
 }
示例#7
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PSRAW(Xmm op1, Addr32 op2)
 {
     return FromName("psraw", op1, op2);
 }
示例#8
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PUnpckLDQ(Xmm op1, Xmm op2)
 {
     return FromName("punpckldq", op1, op2);
 }
示例#9
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode MovDQA(Xmm op1, Addr32 op2)
 {
     return FromName("movdqa", op1, op2);
 }
示例#10
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PSubW(Xmm op1, Addr32 op2)
 {
     return FromName("psubw", op1, op2);
 }
示例#11
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PUnpckHWD(Xmm op1, Xmm op2)
 {
     return FromName("punpckhwd", op1, op2);
 }
示例#12
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PSRLD(Xmm op1, Xmm op2)
 {
     return FromName("psrld", op1, op2);
 }
示例#13
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PSRLW(Xmm op1, byte op2)
 {
     return FromName("psrlw", op1, op2);
 }
示例#14
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PackUSWB(Xmm op1, Addr32 op2)
 {
     return FromName("packuswb", op1, op2);
 }
示例#15
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PackSSWB(Xmm op1, Xmm op2)
 {
     return FromName("packsswb", op1, op2);
 }
示例#16
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PackSSDW(Xmm op1, Addr32 op2)
 {
     return FromName("packssdw", op1, op2);
 }
示例#17
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode MovDQU(Addr32 op1, Xmm op2)
 {
     return FromName("movdqu", op1, op2);
 }
示例#18
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode MovQ(Addr32 op1, Xmm op2)
 {
     return FromName("movq", op1, op2);
 }
示例#19
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PSRLQ(Xmm op1, Addr32 op2)
 {
     return FromName("psrlq", op1, op2);
 }
示例#20
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PAddW(Xmm op1, Addr32 op2)
 {
     return FromName("paddw", op1, op2);
 }
示例#21
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PSubQ(Xmm op1, Xmm op2)
 {
     return FromName("psubq", op1, op2);
 }
示例#22
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PMulHW(Xmm op1, Xmm op2)
 {
     return FromName("pmulhw", op1, op2);
 }
示例#23
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PUnpckHDQ(Xmm op1, Addr32 op2)
 {
     return FromName("punpckhdq", op1, op2);
 }
示例#24
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PMulLW(Xmm op1, Addr32 op2)
 {
     return FromName("pmullw", op1, op2);
 }
示例#25
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PUnpckLBW(Xmm op1, Xmm op2)
 {
     return FromName("punpcklbw", op1, op2);
 }
示例#26
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PSLLQ(Xmm op1, byte op2)
 {
     return FromName("psllq", op1, op2);
 }
示例#27
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PUnpckLWD(Xmm op1, Addr32 op2)
 {
     return FromName("punpcklwd", op1, op2);
 }
示例#28
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PSLLW(Xmm op1, Addr32 op2)
 {
     return FromName("psllw", op1, op2);
 }
示例#29
0
文件: SSE2.cs 项目: bencz/CoffLib
 public static OpCode PSRAD(Xmm op1, byte op2)
 {
     return FromName("psrad", op1, op2);
 }
示例#30
0
文件: SSE2.cs 项目: bencz/CoffLib
 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) });
 }