本文整理汇总了C#中Reg32类的典型用法代码示例。如果您正苦于以下问题:C# Reg32类的具体用法?C# Reg32怎么用?C# Reg32使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
Reg32类属于命名空间,在下文中一共展示了Reg32类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FromName1
public static OpCode FromName1(string op, Reg32 op1)
{
switch (op)
{
case "push":
return OpCode.NewBytes(Util.GetBytes1((byte)(0x50 + op1)));
case "pop":
return OpCode.NewBytes(Util.GetBytes1((byte)(0x58 + op1)));
case "inc":
return OpCode.NewBytes(Util.GetBytes1((byte)(0x40 + op1)));
case "dec":
return OpCode.NewBytes(Util.GetBytes1((byte)(0x48 + op1)));
case "not":
return OpCode.NewBytes(Util.GetBytes2(0xf7, (byte)(0xd0 + op1)));
case "neg":
return OpCode.NewBytes(Util.GetBytes2(0xf7, (byte)(0xd8 + op1)));
case "mul":
return OpCode.NewBytes(Util.GetBytes2(0xf7, (byte)(0xe0 + op1)));
case "imul":
return OpCode.NewBytes(Util.GetBytes2(0xf7, (byte)(0xe8 + op1)));
case "div":
return OpCode.NewBytes(Util.GetBytes2(0xf7, (byte)(0xf0 + op1)));
case "idiv":
return OpCode.NewBytes(Util.GetBytes2(0xf7, (byte)(0xf8 + op1)));
default:
throw new Exception("invalid operator: " + op);
}
}
示例2: FromName
public static OpCode FromName(string op, Reg32 op1)
{
switch (op)
{
case "push":
return new OpCode(new byte[] { (byte)(0x50 + op1) });
case "pop":
return new OpCode(new byte[] { (byte)(0x58 + op1) });
case "inc":
return new OpCode(new byte[] { (byte)(0x40 + op1) });
case "dec":
return new OpCode(new byte[] { (byte)(0x48 + op1) });
case "not":
return new OpCode(new byte[] { 0xf7, (byte)(0xd0 + op1) });
case "neg":
return new OpCode(new byte[] { 0xf7, (byte)(0xd8 + op1) });
case "mul":
return new OpCode(new byte[] { 0xf7, (byte)(0xe0 + op1) });
case "imul":
return new OpCode(new byte[] { 0xf7, (byte)(0xe8 + op1) });
case "div":
return new OpCode(new byte[] { 0xf7, (byte)(0xf0 + op1) });
case "idiv":
return new OpCode(new byte[] { 0xf7, (byte)(0xf8 + op1) });
default:
throw new Exception("invalid operator: " + op);
}
}
示例3: Call
// Call
public static OpCode Call(Reg32 op1)
{
switch (op1)
{
case Reg32.EAX:
return OpCode.NewBytes(Util.GetBytes2(0xff, 0xd0));
}
throw new Exception("The method or operation is not implemented.");
}
示例4: Call
// Call
public static OpCode Call(Reg32 op1)
{
switch (op1)
{
case Reg32.EAX:
return new OpCode(new byte[] { 0xff, 0xd0 });
}
throw new Exception("The method or operation is not implemented.");
}
示例5: FromName
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) });
}
示例6: FromNameWA
public static OpCode FromNameWA(string op, Reg32 op1, Addr32 op2)
{
byte b;
switch (op)
{
case "movzx":
b = 0xb7;
break;
case "movsx":
b = 0xbf;
break;
default:
throw new Exception("invalid operator: " + op);
}
return OpCode.NewA(Util.GetBytes2(0x0f, b), Addr32.NewAdM(op2, (byte)op1));
}
示例7: FromNameW
public static OpCode FromNameW(string op, Reg32 op1, Reg16 op2)
{
byte b;
switch (op)
{
case "movzx":
b = 0xb7;
break;
case "movsx":
b = 0xbf;
break;
default:
throw new Exception("invalid operator: " + op);
}
return OpCode.NewBytes(Util.GetBytes3(0x0f, b, (byte)(0xc0 + (((int)op1) << 3) + op2)));
}
示例8: FromNameW
public static OpCode FromNameW(string op, Reg32 op1, Addr32 op2)
{
byte b;
switch (op)
{
case "movzx":
b = 0xb7;
break;
case "movsx":
b = 0xbf;
break;
default:
throw new Exception("invalid operator: " + op);
}
return new OpCode(new byte[] { 0x0f, b }, null, new Addr32(op2, (byte)op1));
}
示例9: Shift
public static OpCode Shift(string op, Reg32 op1, Reg8 op2)
{
byte b;
switch (op)
{
case "shl":
case "sal":
b = (byte)(0xe0 + op1);
break;
case "shr":
b = (byte)(0xe8 + op1);
break;
case "sar":
b = (byte)(0xf8 + op1);
break;
default:
throw new Exception("invalid operator: " + op);
}
if (op2 != Reg8.CL)
throw new Exception("invalid register: " + op2);
else
return new OpCode(new byte[] { 0xd3, b });
}
示例10: Shift
public static OpCode Shift(string op, Reg32 op1, byte op2)
{
byte b;
switch (op)
{
case "shl":
case "sal":
b = (byte)(0xe0 + op1);
break;
case "shr":
b = (byte)(0xe8 + op1);
break;
case "sar":
b = (byte)(0xf8 + op1);
break;
default:
throw new Exception("invalid operator: " + op);
}
if (op2 == 1)
return OpCode.NewBytes(Util.GetBytes2(0xd1, b));
else
return OpCode.NewB(Util.GetBytes2(0xc1, b), op2);
}
示例11: Xchg
public static OpCode Xchg(Reg32 op1, Reg32 op2)
{
return FromName2("xchg", op1, op2);
}
示例12: XchgAR
public static OpCode XchgAR(Addr32 op1, Reg32 op2)
{
return XchgRA(op2, op1);
}
示例13: TestRA
public static OpCode TestRA(Reg32 op1, Addr32 op2)
{
return TestAR(op2, op1);
}
示例14: Cmp
public static OpCode Cmp(Reg32 op1, Reg32 op2)
{
return FromName2("cmp", op1, op2);
}
示例15: AndR
public static OpCode AndR(Reg32 op1, Val32 op2)
{
return FromName2R("and", op1, op2);
}