Exemplo n.º 1
0
        public static void Callm(Cpu cpu, uint rX)
        {
            var vAddr = cpu.Registers[rX];
            var value = cpu.Read(vAddr);

            cpu.Call(value);
        }
Exemplo n.º 2
0
        public static void Printm(Cpu cpu, uint rX)
        {
            var vAddr = cpu.Registers[rX];
            var value = cpu.Read(vAddr);

            cpu.Print(value);
        }
Exemplo n.º 3
0
        public static void Movmm(Cpu cpu, uint rX, uint rY)
        {
            var vAddr = cpu.Registers[rY];
            var value = cpu.Read(vAddr);

            vAddr = cpu.Registers[rX];
            cpu.Write(vAddr, value);
        }
Exemplo n.º 4
0
        public static void Cmprm(Cpu cpu, uint rX, uint rY)
        {
            var vAddr = cpu.Registers[rY];

            var lValue = cpu.Registers[rX];
            var rValue = cpu.Read(vAddr);

            cpu.Sf = (lValue < rValue);
            cpu.Zf = (lValue == rValue);
        }
Exemplo n.º 5
0
        private static uint ReadValue(Cpu cpu, OpCodeFlag flag, uint param)
        {
            switch (flag)
            {
            case OpCodeFlag.Register:
                return(cpu.Registers[param]);

            case OpCodeFlag.MemoryAddress:
                return(cpu.Read(cpu.Registers[param]));

            case OpCodeFlag.Constant:
                return(param);

            default:
                throw new ArgumentOutOfRangeException(nameof(flag));
            }
        }
Exemplo n.º 6
0
        public static void Movmr(Cpu cpu, uint rX, uint rY)
        {
            var vAddr = cpu.Registers[rY];

            cpu.Registers[rX] = cpu.Read(vAddr);
        }
Exemplo n.º 7
0
 public static void Callm(Cpu cpu, uint rX)
 {
     var vAddr = cpu.Registers[rX];
     var value = cpu.Read(vAddr);
     cpu.Call(value);
 }
Exemplo n.º 8
0
 public static void Printm(Cpu cpu, uint rX)
 {
     var vAddr = cpu.Registers[rX];
     var value = cpu.Read(vAddr);
     cpu.Print(value);
 }
Exemplo n.º 9
0
 public static void Movmr(Cpu cpu, uint rX, uint rY)
 {
     var vAddr = cpu.Registers[rY];
     cpu.Registers[rX] = cpu.Read(vAddr);
 }
Exemplo n.º 10
0
        public static void Movmm(Cpu cpu, uint rX, uint rY)
        {
            var vAddr = cpu.Registers[rY];
            var value = cpu.Read(vAddr);

            vAddr = cpu.Registers[rX];
            cpu.Write(vAddr, value);
        }
Exemplo n.º 11
0
        public static void Cmprm(Cpu cpu, uint rX, uint rY)
        {
            var vAddr = cpu.Registers[rY];

            var lValue = cpu.Registers[rX];
            var rValue = cpu.Read(vAddr);

            cpu.Sf = (lValue < rValue);
            cpu.Zf = (lValue == rValue);
        }
Exemplo n.º 12
0
 private static uint ReadValue(Cpu cpu, OpCodeFlag flag, uint param)
 {
     switch (flag)
     {
         case OpCodeFlag.Register:
             return cpu.Registers[param];
         case OpCodeFlag.MemoryAddress:
             return cpu.Read(cpu.Registers[param]);
         case OpCodeFlag.Constant:
             return param;
         default:
             throw new ArgumentOutOfRangeException(nameof(flag));
     }
 }