Пример #1
0
 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));
 }
Пример #2
0
 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));
 }
Пример #3
0
        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());
        }