diff -r e85600529ca5 -r 4794759139ea progs/loops.j --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/progs/loops.j Sat Jun 15 09:23:18 2013 -0400 @@ -0,0 +1,90 @@ + +.class public loops.loops +.super java/lang/Object + +.method public ()V + aload_0 + invokenonvirtual java/lang/Object/()V + return +.end method + +.method public static write(I)V + .limit locals 5 + .limit stack 5 + iload 0 + getstatic java/lang/System/out Ljava/io/PrintStream; + swap + invokevirtual java/io/PrintStream/println(I)V + return +.end method + + +.method public static main([Ljava/lang/String;)V + .limit locals 200 + .limit stack 200 + +ldc 1000 +istore 0 +iload 0 +istore 1 +iload 0 +istore 2 +iload 0 +istore 3 + +Loop_begin_0: + +ldc 0 +iload 1 +if_icmpge Loop_end_1 + +Loop_begin_2: + +ldc 0 +iload 2 +if_icmpge Loop_end_3 + +Loop_begin_4: + +ldc 0 +iload 3 +if_icmpge Loop_end_5 +iload 3 +ldc 1 +isub +istore 3 +goto Loop_begin_4 + +Loop_end_5: + +iload 0 +istore 3 +iload 2 +ldc 1 +isub +istore 2 +goto Loop_begin_2 + +Loop_end_3: + +iload 0 +istore 2 +iload 1 +ldc 1 +isub +istore 1 +goto Loop_begin_0 + +Loop_end_1: + +iload 1 +invokestatic loops/loops/write(I)V +iload 2 +invokestatic loops/loops/write(I)V +iload 3 +invokestatic loops/loops/write(I)V + + + return + +.end method