public static void SEI(JITContext ctx, Disassembler.DecompEntry inst, ILGenerator gen) { gen.EmitGetRegister(inst.Value.Reg0, ctx); gen.Emit(OpCodes.Ldind_I1); gen.Emit(OpCodes.Conv_U1); gen.EmitLoadImmediate(inst); gen.Emit(OpCodes.Beq, ctx.Label(inst.Offset + 4)); }
public static void SNER(JITContext ctx, Disassembler.DecompEntry inst, ILGenerator gen) { gen.EmitGetRegister(inst.Value.Reg0, ctx); gen.Emit(OpCodes.Ldind_I1); gen.Emit(OpCodes.Conv_U1); gen.EmitGetRegister(inst.Value.Reg1, ctx); gen.Emit(OpCodes.Ldind_I1); gen.Emit(OpCodes.Conv_U1); gen.Emit(OpCodes.Bne_Un, ctx.Label(inst.Offset + 4)); }
public static void JMP0(JITContext ctx, Disassembler.DecompEntry inst, ILGenerator gen) { List <Label> JumpTable = new List <Label>(); for (int i = inst.Value.Immediate16; i < inst.Value.Immediate16 + 256; i++) { JumpTable.Add(ctx.Label(i)); } gen.EmitGetRegister(0, ctx); gen.Emit(OpCodes.Ldind_I1); gen.Emit(OpCodes.Conv_U1); gen.Emit(OpCodes.Switch, JumpTable.ToArray()); }