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(); }
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); }); }
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()); }