progs/fib.j
changeset 675 d665e7dd66d7
parent 624 8d0af38389bc
--- a/progs/fib.j	Sun Oct 27 13:32:15 2019 +0000
+++ b/progs/fib.j	Sun Oct 27 13:45:54 2019 +0000
@@ -13,80 +13,49 @@
     .limit stack 2 
     getstatic java/lang/System/out Ljava/io/PrintStream; 
     iload 0
-    invokevirtual java/io/PrintStream/println(I)V 
+    i2c
+    invokevirtual java/io/PrintStream/print(C)V 
     return 
 .end method
 
-.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 
-    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 
-.end method
-
 .method public static main([Ljava/lang/String;)V
    .limit locals 200
    .limit stack 200
 
-; COMPILED CODE STARTS
+ldc 10
+istore 0
+ldc 0
+istore 1
+ldc 1
+istore 2
+ldc 0
+istore 3
 
-   ldc 10
-   istore 0
-   ldc 0
-   istore 1
-   ldc 1
-   istore 2
-   ldc 0
-   istore 3
 Loop_begin_0:
-   ldc 0
-   iload 0
-   if_icmpge Loop_end_1
-   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_0
+
+ldc 0
+iload 0
+if_icmpge Loop_end_1
+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_0
+
 Loop_end_1:
-   iload 1
-   invokestatic fib/fib/write(I)V
 
-; COMPILED CODE ENDS
+iload 1
+invokestatic fib/fib/write(I)V
+
+
    return
 
 .end method