public void SubstractTest()
{
ExecuteAssembly(@"
li r26, 0
li r27, 1
li r28, -1
li r29, 0x7FFFFFFF
li r30, 0x80000000
sub r1, r26, r26
sub r2, r26, r27
sub r3, r26, r28
sub r4, r26, r29
sub r5, r26, r30
sub r6, r27, r26
sub r7, r27, r27
sub r8, r27, r28
sub r9, r27, r29
sub r10, r27, r30
sub r11, r28, r26
sub r12, r28, r27
sub r13, r28, r28
sub r14, r28, r29
sub r15, r28, r30
sub r16, r29, r26
sub r17, r29, r27
sub r18, r29, r28
sub r19, r29, r29
sub r20, r29, r30
sub r21, r30, r26
sub r22, r30, r27
sub r23, r30, r28
sub r24, r30, r29
sub r25, r30, r30
");
var ExpectedValues = new int[] {
0
,-1
,1
,-2147483647
,-2147483648
,1
,0
,2
,-2147483646
,-2147483647
,-1
,-2
,0
,-2147483648
,2147483647
,2147483647
,2147483646
,-2147483648
,0
,-1
,-2147483648
,2147483647
,-2147483647
,1
,0
};
for (int n = 1; n <= 25; n++)
{
Assert.AreEqual(ExpectedValues[n - 1], CpuThreadState.GPR[n]);
//Console.WriteLine(CpuThreadState.GPR[n]);
}
}