diff -r 47a299e7010f -r 8d0af38389bc progs/fib.j --- a/progs/fib.j Sun Jul 28 01:00:41 2019 +0100 +++ b/progs/fib.j Sun Jul 28 14:24:46 2019 +0100 @@ -17,28 +17,18 @@ return .end method -.method public static writes(Ljava/lang/String;)V - .limit stack 2 - .limit locals 1 - getstatic java/lang/System/out Ljava/io/PrintStream; - aload 0 - invokevirtual java/io/PrintStream/println(Ljava/lang/String;)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 + ldc 10 ; the newline delimiter isub ifeq Label2 iload 2 @@ -54,11 +44,10 @@ imul iadd istore 1 - goto Label2 goto Label1 - Label2: - iload 1 ; when we come here we have our integer computed in local variable 1 + ;when we come here we have our integer computed in local variable 1 + iload 1 ireturn .end method @@ -66,40 +55,38 @@ .limit locals 200 .limit stack 200 -ldc 10 -istore 0 -ldc 0 -istore 1 -ldc 1 -istore 2 -ldc 0 -istore 3 - -Loop_begin_0: +; COMPILED CODE STARTS -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 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 +Loop_end_1: + iload 1 + invokestatic fib/fib/write(I)V -Loop_end_1: - -iload 1 -invokestatic fib/fib/write(I)V - - +; COMPILED CODE ENDS return .end method