Exemple #1
0
        public override string ToString(InstructionData aData)
        {
            var fromReg = (Registers)aData[0];
            var toReg   = (Registers)aData[1];

            // mov R1, R2
            return($"{AsmName} {fromReg}, {toReg}");
        }
Exemple #2
0
        public override InstructionData Parse(string[] args)
        {
            InstructionData data =
                default(InstructionData);

            data.Metadata = new Metadata();
            return(data);
        }
Exemple #3
0
        public override bool Execute(InstructionData aData, Cpu aCpu)
        {
            aCpu.Registers[(Registers)aData[1]] =
                aCpu.Vm.Memory
                .GetInt((int)aData[0], GetSecurityContext(), false);

            return(false);
        }
Exemple #4
0
        public override bool Execute(InstructionData aData, Cpu aCpu)
        {
            aCpu.Vm.Memory.StackPushInt((int)aData[0]);

            // Update the stack pointer register to reflect
            // the new stack position.
            // This must be done with a security-level context.
            aCpu.Registers[(Registers.SP, SecurityContext.System)] =
Exemple #5
0
        public override string ToString(InstructionData aData)
        {
            var fromReg1 = (Registers)aData[0];
            var fromReg2 = (Registers)aData[1];

            // add R1, R2
            return($"{AsmName} {fromReg1}, {fromReg2}");
        }
Exemple #6
0
        public override bool Execute(InstructionData aData, Cpu aCpu)
        {
            aCpu.PushState();

            aCpu.Registers[Registers.IP] = (int)aData[0];

            return(false);
        }
Exemple #7
0
        public override string ToString(InstructionData aData)
        {
            var address = (int)aData[0];

            // call &$LITERAL
            return((OutputLiteralsAsHex) ?
                   $"{AsmName} &$0x{address:X}" :
                   $"{AsmName} &${address:X}");
        }
Exemple #8
0
        void Peek(ulong address, int length = 100)
        {
            string data = new InstructionData(address).fullData;

            //Bytedata = PS4.ReadMemory(PID, address, length);
            //DisassemblyTextBox.Text = GetDisassembly(address, Bytedata);
            DisassemblyTextBox.Text = data;
            Debugging(address);
        }
Exemple #9
0
        public override bool Execute(InstructionData aData, Cpu aCpu)
        {
            if (aCpu.Registers[Registers.AC] != (int)aData[0])
            {
                aCpu.Registers[Registers.IP] = (int)aData[1];
            }

            return(false);
        }
Exemple #10
0
        public override bool Execute(InstructionData aData, Cpu aCpu)
        {
            ++aCpu.Registers[(Registers)aData[0]];

            // We do not need to update the CPU flags
            // here as the result is not going
            // into the accumulator register.

            return(false);
        }
Exemple #11
0
        public override string ToString(InstructionData aData)
        {
            var literal = (int)aData[0];
            var toReg   = (Registers)aData[1];

            // mov $LITERAL, R1
            return((OutputLiteralsAsHex) ?
                   $"{AsmName} $0x{literal:X}, {toReg}" :
                   $"{AsmName} ${literal}, {toReg}");
        }
Exemple #12
0
        public override string ToString(InstructionData aData)
        {
            var bit     = (int)aData[0];
            var fromReg = (Registers)aData[1];

            // bit $LITERAL, R1
            return((OutputLiteralsAsHex) ?
                   $"{AsmName} $0x{bit:X}, {fromReg}" :
                   $"{AsmName} ${bit}, {fromReg}");
        }
        public override InstructionData Parse(string[] args)
        {
            InstructionData data = default(InstructionData);

            if (args.Length > 1)
            {
                data.Metadata = ushort.Parse(args[1]);
            }
            return(data);
        }
Exemple #14
0
 public Character(GameObject obj, WorldController wc, int i, InstructionManager m) : base(obj, wc, i)
 {
     manager      = m;
     Instructions = manager.GetInstructionSet(this);
     if (Instructions.Count > 0)
     {
         currentInstruction = Instructions.First.Value;
         Instructions.RemoveFirst();
     }
 }
Exemple #15
0
        public override string ToString(InstructionData aData)
        {
            var fromReg = (Registers)aData[0];
            var literal = (int)aData[1];

            // and R1, $LITERAL
            return((OutputLiteralsAsHex) ?
                   $"{AsmName} {fromReg}, $0x{literal:X}" :
                   $"{AsmName} {fromReg}, ${literal}");
        }
Exemple #16
0
        public override string ToString(InstructionData aData)
        {
            var fromReg = (Registers)aData[0];
            var address = (int)aData[1];

            // jeq R1, &ADDRESS
            return((OutputLiteralsAsHex) ?
                   $"{AsmName} {fromReg}, &0x{address:X}" :
                   $"{AsmName} {fromReg}, &{address}");
        }
        public ActionResult SaveInstruction(Instruction instruction)
        {
            ExperimentData  experimentData  = (ExperimentData)rsContext.getActivity(instruction.expID);
            InstructionData instructionData = Adapting.getInstructionAsData(instruction);

            instructionData.experimentOrder = experimentData.activities.Count;
            experimentData.addStep(instructionData);
            rsContext.SaveChanges();
            return(RedirectToAction("EditExperiment", new { ExpID = instruction.expID }));
        }
Exemple #18
0
        public override string ToString(InstructionData aData)
        {
            var literal = (int)aData[0];
            var toAddr  = (int)aData[1];

            // mov $LITERAL, &ADDRESS
            return((OutputLiteralsAsHex) ?
                   $"{AsmName} $0x{literal:X}, &0x{toAddr:X}" :
                   $"{AsmName} ${literal}, &{toAddr}");
        }
Exemple #19
0
        public override string ToString(InstructionData aData)
        {
            var literal = (int)aData[0];
            var address = (int)aData[1];

            // jne $LITERAL, &ADDRESS
            return((OutputLiteralsAsHex) ?
                   $"{AsmName} $0x{literal:X}, &0x{address:X}" :
                   $"{AsmName} ${literal}, &{address}");
        }
Exemple #20
0
        public override string ToString(InstructionData aData)
        {
            var fromReg    = (Registers)aData[0];
            var memoryAddr = (int)aData[1];

            // mov R1, &ADDRESS
            return((OutputLiteralsAsHex) ?
                   $"{AsmName} {fromReg}, &0x{memoryAddr:X}" :
                   $"{AsmName} {fromReg}, &{memoryAddr}");
        }
Exemple #21
0
        public override string ToString(InstructionData aData)
        {
            var memoryAddr = (int)aData[0];
            var toReg      = (Registers)aData[1];

            // mov &ADDRESS, R1
            return((OutputLiteralsAsHex) ?
                   $"{AsmName} &0x{memoryAddr:X}, {toReg}" :
                   $"{AsmName} &{memoryAddr:X}, {toReg}");
        }
Exemple #22
0
        public override string ToString(InstructionData aData)
        {
            var sizeHintStr =
                ((InstructionSizeHint)aData[0]).ToString();

            var fromReg = (Registers)aData[1];
            var toReg   = (Registers)aData[2];

            // mov TYPE &R1, R2
            return($"{AsmName} {sizeHintStr.ToUpper()} &{fromReg}, {toReg}");
        }
Exemple #23
0
        public void AddInstruction(InstructionBuilder instructionBuilder, Token[] argTokens)
        {
            // todo1[ak] check args

            if (this.IsFinished)
            {
                throw new ApplicationException(); // todo2[ak]
            }

            InstructionData data = new InstructionData(instructionBuilder, argTokens);
            _instructionDatas.Add(data);
        }
Exemple #24
0
        public override bool Execute(InstructionData aData, Cpu aCpu)
        {
            // We do not care if this writes to executable
            // memory.
            aCpu.Vm.Memory
            .SetInt((int)aData[1],
                    (int)aData[0],
                    GetSecurityContext(),
                    false);

            return(false);
        }
Exemple #25
0
        public override bool Execute(InstructionData aData, Cpu aCpu)
        {
            // We do not care if this write
            // is within an executable region or not.
            aCpu.Vm.Memory
            .SetInt((int)aData[1],
                    aCpu.Registers[(Registers)aData[0]],
                    GetSecurityContext(),
                    false);

            return(false);
        }
Exemple #26
0
        public override bool Execute(InstructionData aData, Cpu aCpu)
        {
            var val =
                aCpu.Registers[(Registers)aData[1]];

            var bitSet =
                Utils.IsBitSet(val, (int)aData[0]) ? 1 : 0;

            aCpu.SetResultFlagPair(bitSet);

            return(false);
        }
Exemple #27
0
 public override bool Execute(PlayerBot bot, InstructionData data)
 {
     if (Core.Ball != null)
     {
         Position Pos = new Position();
         Pos.X   = (int)Core.Ball.Position3d.X;
         Pos.Y   = (int)Core.Ball.Position3d.Z;
         Pos.Z   = (int)Core.Ball.Position3d.Y;
         bot.Pos = Pos;
     }
     return(true);
 }
Exemple #28
0
 void RevertInstructionsToTime(float t)
 {
     if (DoneInstructions.Count > 0)
     {
         while (DoneInstructions.Count > 0 && DoneInstructions.Peek().Value1 > t)
         {
             if (currentInstruction != null)
             {
                 Instructions.AddFirst(currentInstruction);
             }
             currentInstruction = DoneInstructions.Pop().Value2;
         }
     }
 }
Exemple #29
0
        public static InstructionData getInstructionAsData(Instruction instruction)
        {
            InstructionData iData = new InstructionData();

            iData.ActivityName   = instruction.ActivityName;
            iData.expID          = instruction.expID;
            iData.id             = instruction.id;
            iData.isMainActivity = instruction.isMainActivity;
            iData.RoomId         = instruction.RoomId;

            iData.Command = instruction.Command;

            return(iData);
        }
Exemple #30
0
        public void TestJumpBeforeInstruction()
        {
            // We need to add the position at which
            // the program will be loaded in memory.
            // This will give us an absolute
            // address to work with.
            const int address =
                (
                    sizeof(OpCode) * 2 +
                    sizeof(Registers) +
                    sizeof(int) +
                    Compiler.InitialAddress
                );

            var program = new []
            {
                new CompilerIns(OpCode.MOV_LIT_REG,
                                new object[] { 0, Registers.R1 }),
                new CompilerIns(OpCode.NOP),
                new CompilerIns(OpCode.LABEL, new object[] { "AAA" }),
                new CompilerIns(OpCode.NOP),

                new CompilerIns(OpCode.JNE_REG,
                                new object[] { Registers.R1, 0 },
                                new [] { new AsmLabel("AAA", 1) }),
            };

            Vm.LoadAndInitialize(QuickCompile.RawCompile(program));

            var ins = new InstructionData()
            {
                OpCode = OpCode.NOP
            };

            var i = 0;

            while (i < 4)
            {
                ins = Vm.Cpu.Step();
                i++;
            }

            if (ins is null)
            {
                Assert.Fail("Expected an instruction but none was returned.");
            }

            Assert.IsTrue(address == (int)ins.Args[1].Value);
        }
Exemple #31
0
        public static Instruction getInstructionFromData(InstructionData instructionData)
        {
            Instruction i = new Instruction();

            i.ActivityName   = instructionData.ActivityName;
            i.expID          = instructionData.expID;
            i.id             = instructionData.id;
            i.isMainActivity = instructionData.isMainActivity;
            i.RoomId         = instructionData.RoomId;
            i.Type           = instructionData.Type;

            i.Command = instructionData.Command;

            return(i);
        }
Exemple #32
0
 private Instruction CreateInstruction(MethodDefinition method, ILWeaver weaver, InstructionData instructionData, List<Instruction> insts, Patcher patcher)
 {
     var opcode = opCodes[instructionData.OpCode];
     var optype = instructionData.OpType;
     Instruction Instruction = null;
     switch (optype)
     {
         case OpType.None:
             Instruction = Instruction.Create(opcode);
             break;
         case OpType.Byte:
             Instruction = Instruction.Create(opcode, Convert.ToByte(instructionData.Operand));
             break;
         case OpType.SByte:
             Instruction = Instruction.Create(opcode, Convert.ToSByte(instructionData.Operand));
             break;
         case OpType.Int32:
             Instruction = Instruction.Create(opcode, Convert.ToInt32(instructionData.Operand));
             break;
         case OpType.Int64:
             Instruction = Instruction.Create(opcode, Convert.ToInt64(instructionData.Operand));
             break;
         case OpType.Single:
             Instruction = Instruction.Create(opcode, Convert.ToSingle(instructionData.Operand));
             break;
         case OpType.Double:
             Instruction = Instruction.Create(opcode, Convert.ToDouble(instructionData.Operand));
             break;
         case OpType.String:
             Instruction = Instruction.Create(opcode, Convert.ToString(instructionData.Operand));
             break;
         case OpType.VerbatimString:
             Instruction = Instruction.Create(opcode, Regex.Unescape(Convert.ToString(instructionData.Operand)));
             break;
         case OpType.Instruction:
             var index = Convert.ToInt32(instructionData.Operand);
             Instruction = Instruction.Create(opcode, index < 1024 ? weaver.Instructions[index] : insts[index - 1024]);
             break;
         case OpType.Variable:
             Instruction = Instruction.Create(opcode, method.Body.Variables[Convert.ToInt32(instructionData.Operand)]);
             break;
         case OpType.Parameter:
             Instruction = Instruction.Create(opcode, method.Parameters[Convert.ToInt32(instructionData.Operand)]);
             break;
         case OpType.Field:
             var fieldData = Convert.ToString(instructionData.Operand).Split('|');
             var fieldType = GetType(fieldData[0], fieldData[1], patcher);
             if (fieldType == null) return null;
             var fieldField = fieldType.Fields.FirstOrDefault(f => f.Name.Equals(fieldData[2]));
             if (fieldField == null)
             {
                 ShowMsg(string.Format("The Field '{0}' for '{1}' could not be found!", fieldData[2], Name), "Missing Field", patcher);
                 return null;
             }
             Instruction = Instruction.Create(opcode, method.Module.Import(fieldField));
             break;
         case OpType.Method:
             var methodData = Convert.ToString(instructionData.Operand).Split('|');
             var methodType = GetType(methodData[0], methodData[1], patcher);
             if (methodType == null) return null;
             var methodMethod = methodType.Methods.FirstOrDefault(f => f.Name.Equals(methodData[2]));
             if (methodMethod == null)
             {
                 ShowMsg(string.Format("The Method '{0}' for '{1}' could not be found!", methodData[2], Name), "Missing Method", patcher);
                 return null;
             }
             Instruction = Instruction.Create(opcode, method.Module.Import(methodMethod));
             break;
         case OpType.Generic:
             break;
         case OpType.Type:
             var typeData = Convert.ToString(instructionData.Operand).Split('|');
             var typeType = GetType(typeData[0], typeData[1], patcher);
             if (typeType == null) return null;
             Instruction = Instruction.Create(opcode, method.Module.Import(typeType));
             break;
         default:
             throw new ArgumentOutOfRangeException();
     }
     return Instruction;
 }