2007-12-06 Jb Evain <jbevain@novell.com>
[mono.git] / mono / tests / even-odd.il
bloba393d9eeef6fc5df2a4eaeff170800716985c4d5
1 .assembly EvenOdd { }
2 .class EvenOdd
3 { .method private static bool IsEven(int32 N) il managed
4   { .maxstack   2
5     ldarg.0             // N
6     ldc.i4.0
7     bne.un      NonZero
8     ldc.i4.1
9     ret
10 NonZero:
11     ldarg.0
12     ldc.i4.1
13     sub
14     tail.
15     call bool EvenOdd::IsOdd(int32)
16     ret
17   } // end of method `EvenOdd::IsEven'
19   .method private static bool IsOdd(int32 N) il managed
20   { .maxstack   2
21     // Demonstrates use of argument names and labels
22     // Notice that the assembler does not covert these 
23     // automatically to their short versions
24     ldarg       N
25     ldc.i4.0
26     bne.un      NonZero
27     ldc.i4.0
28     ret
29 NonZero:
30     ldarg       N
31     ldc.i4.1
32     sub
33     tail.
34     call bool EvenOdd::IsEven(int32)
35     ret
36   } // end of method `EvenOdd::IsOdd'
38   .method public static void Test(int32 N) il managed
39   { .maxstack   1
40     ldarg       N
41     call        void [mscorlib]System.Console::Write(int32)
42     ldstr       " is "
43     call        void [mscorlib]System.Console::Write(class System.String)
44     ldarg       N
45     call        bool EvenOdd::IsEven(int32)
46     brfalse     LoadOdd
47     ldstr       "even"
48 Print:
49     call        void [mscorlib]System.Console::WriteLine(class System.String)
50     ret
51 LoadOdd:
52     ldstr       "odd"
53     br          Print
54   } // end of method `EvenOdd::Test'  
55 } // end of class `EvenOdd'
57 //Global method
59 .method public static void main() il managed
60 { .entrypoint
61   .maxstack     1
62   ldc.i4        10000001
63   call          void EvenOdd::Test(int32)
64   ret
65 } // end of global method `main'