progs/loops.j
changeset 93 4794759139ea
child 207 f824e1331fc6
--- /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 <init>()V
+   aload_0
+   invokenonvirtual java/lang/Object/<init>()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