progs/fib.j
changeset 600 d488a3e7b0ec
parent 545 76a98ed71a2a
child 609 e33545bb2eba
--- a/progs/fib.j	Mon Nov 12 11:33:51 2018 +0000
+++ b/progs/fib.j	Tue Nov 13 08:16:48 2018 +0000
@@ -3,104 +3,92 @@
 .super java/lang/Object
 
 .method public <init>()V
-    aload_0
-    invokenonvirtual java/lang/Object/<init>()V
-    return
+   aload_0
+   invokenonvirtual java/lang/Object/<init>()V
+   return
 .end method
 
-.method public static print(Ljava/lang/String;)V
-    .limit locals 5
-    .limit stack 5
-    aload 0
-    getstatic java/lang/System/out Ljava/io/PrintStream;
-    swap
-    invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
-    return
+.method public static write(I)V 
+    .limit locals 1 
+    .limit stack 2 
+    getstatic java/lang/System/out Ljava/io/PrintStream; 
+    iload 0
+    invokevirtual java/io/PrintStream/println(I)V 
+    return 
 .end method
 
-.method public static write(I)V
-    .limit locals 1
-    .limit stack 2
-    getstatic java/lang/System/out Ljava/io/PrintStream;
-    iload 0
-    invokevirtual java/io/PrintStream/println(I)V
-    return
-.end method
-
-.method public static read()I
-    .limit locals 10
+.method public static read()I 
+    .limit locals 10 
     .limit stack 10
 
-    ldc 0
-    istore 1  ; this will hold our final integer
-Label1:
-    getstatic java/lang/System/in Ljava/io/InputStream;
-    invokevirtual java/io/InputStream/read()I
-    istore 2
-    iload 2
-    ldc 10   ; the newline delimiter
-    isub
-    ifeq Label2
-    iload 2
-    ldc 32   ; the space delimiter
-    isub
+    ldc 0 
+    istore 1  ; this will hold our final integer 
+Label1: 
+    getstatic java/lang/System/in Ljava/io/InputStream; 
+    invokevirtual java/io/InputStream/read()I 
+    istore 2 
+    iload 2 
+    ldc 10   ; the newline delimiter 
+    isub 
+    ifeq Label2 
+    iload 2 
+    ldc 32   ; the space delimiter 
+    isub 
     ifeq Label2
 
-    iload 2
-    ldc 48   ; we have our digit in ASCII, have to subtract it from 48
-    isub
-    ldc 10
-    iload 1
-    imul
-    iadd
-    istore 1
-    goto Label1
-Label2:
-    ;when we come here we have our integer computed in local variable 1
-    iload 1
-    ireturn
+    iload 2 
+    ldc 48   ; we have our digit in ASCII, have to subtract it from 48 
+    isub 
+    ldc 10 
+    iload 1 
+    imul 
+    iadd 
+    istore 1 
+    goto Label1 
+Label2: 
+    ;when we come here we have our integer computed in local variable 1 
+    iload 1 
+    ireturn 
 .end method
 
 .method public static main([Ljava/lang/String;)V
-    .limit locals 200
-    .limit stack 200
+   .limit locals 200
+   .limit stack 200
 
-    ldc "Fib"
-    invokestatic fib/fib/print(Ljava/lang/String;)V
-    invokestatic fib/fib/read()I
-    istore 0
-    ldc 0
-    istore 1
-    ldc 1
-    istore 2
+invokestatic fib/fib/read()I
+istore 0
+ldc 0
+istore 1
+ldc 1
+istore 2
+ldc 0
+istore 3
 
-Loop_start_1:
-
-    iload 0
-    ldc 0
-    if_icmple Loop_end_0
+Loop_begin_2:
 
-    iload 2
-    istore 3
-    iload 1
-    iload 2
-    iadd
-    istore 2
-    iload 3
-    istore 1
-    iload 0
-    ldc 1
-    isub
-    istore 0
+ldc 0
+iload 0
+if_icmpge Loop_end_3
+iload 2
+istore 3
+iload 1
+iload 2
+iadd
+istore 2
+iload 3
+istore 1
+iload 0
+ldc 1
+isub
+istore 0
+goto Loop_begin_2
 
-    goto Loop_start_1
+Loop_end_3:
 
-Loop_end_0:
+iload 1
+invokestatic fib/fib/write(I)V
 
-    ldc "Result"
-    invokestatic fib/fib/print(Ljava/lang/String;)V
-    iload 2
-    invokestatic fib/fib/write(I)V
 
-    return
+   return
+
 .end method