--- 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