public void JalTest()
{
var Events = new List<int>();
CpuProcessor.RegisterNativeSyscall(1, () => { Events.Add(1); });
CpuProcessor.RegisterNativeSyscall(2, () => { Events.Add(2); });
CpuProcessor.RegisterNativeSyscall(3, () => { Events.Add(3); });
CpuProcessor.RegisterNativeSyscall(4, () => { Events.Add(4); });
ExecuteAssembly(@"
li r1, 100
syscall 1
jal function1
nop
jal function1
nop
jal function1
nop
syscall 3
j end
nop
function1:
syscall 2
addi r1, r1, 1
jr r31
nop
end:
nop
syscall 4
");
Assert.AreEqual("[1,2,2,2,3,4]", Events.ToJson());
Assert.AreEqual(103, CpuThreadState.GPR[1]);
}