コード例 #1
0
        public void CpuThreadStateTest()
        {
            var HlePspThread = new HleThread(new CpuThreadState(Processor));

            MipsAssembler.Assemble(@"
			.code 0x08000000
				li r31, 0x08000000
				jal end
				nop
			end:
				addi r1, r1, 1
				jr r31
				nop
			"            );

            HlePspThread.CpuThreadState.PC = 0x08000000;
            HlePspThread.Step();
        }
コード例 #2
0
        static public Action <CpuThreadState> CreateDelegateForString(this CpuProcessor CpuProcessor, String Assembly, bool BreakPoint = false)
        {
            var MemoryStream = new MemoryStream();

            MemoryStream.PreservePositionAndLock(() =>
            {
                var MipsAssembler = new MipsAssembler(MemoryStream);

                MipsAssembler.Assemble(Assembly);
            });
            var Delegate = CpuProcessor.CreateDelegateForPC(MemoryStream, 0);

            return((_CpuThreadState) =>
            {
                _CpuThreadState.StepInstructionCount = 1000000;
                Delegate(_CpuThreadState);
            });
        }
コード例 #3
0
        public void AssembleTest()
        {
            var memoryStream = new MemoryStream();
            var binaryReader = new BinaryReader(memoryStream);

            memoryStream.PreservePositionAndLock(() =>
            {
                var mipsAssembler = new MipsAssembler(memoryStream);

                mipsAssembler.Assemble(@"
					add r1, r0, r2
					sub r3, r31, r7
				"                );
            });

            Assert.Equal(8, memoryStream.Length);
            Assert.Equal((uint)0x00020820, binaryReader.ReadUInt32());
            Assert.Equal((uint)0x03E71822, binaryReader.ReadUInt32());
        }