diff -r e0a41a1f24cf -r d665e7dd66d7 progs/fib.j --- 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