diff -r d6af4b1239de -r b018234c9126 progs/fib.j --- a/progs/fib.j Tue Nov 17 01:58:50 2015 +0000 +++ b/progs/fib.j Tue Nov 17 04:02:08 2015 +0000 @@ -9,50 +9,48 @@ .end method .method public static write(I)V - .limit locals 5 - .limit stack 5 - iload 0 + .limit locals 1 + .limit stack 2 getstatic java/lang/System/out Ljava/io/PrintStream; - swap + iload 0 invokevirtual java/io/PrintStream/println(I)V return .end method .method public static read()I - .limit locals 10 - .limit stack 10 + .limit locals 10 + .limit stack 10 - ldc 0 - istore 1 ; this will hold our final integer + 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 + 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 + 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 + ;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 @@ -87,7 +85,7 @@ Loop_end_1: -iload 2 +iload 1 invokestatic fib/fib/write(I)V