.class public oneplusone .super java/lang/Object .method public ()V aload_0 invokespecial java/lang/Object/()V return .end method .method public static main([Ljava/lang/String;)V .limit stack 5 .limit locals 100 ldc 0 istore 1 ; int a ldc 0 istore 2 ; int b ldc 0 istore 3 ; boolean c (note that booleans are encoded as 0 or 1, the JVM has no boolean type) ldc 42 istore 1 ; a = 42 ldc 2 iload 1 iadd istore 2 ; b = a + 2 (b = 44, a = 42) ldc 1 iload 2 iadd iload 1 iadd istore 1 ; a = (a+(b+1)) ; (b = 44, a = 87) iload 2 iload 1 ; a ldc 3 ; 3 iadd ; This is the (3+a) if_icmplt Lessthan ; Jump to the LessThan bit ldc 0 istore 3 goto Continue Lessthan: ldc 1 istore 3 goto Continue Continue: goto L2 ; Start of the while loop stuff L1: iload 2 ldc 2 iadd istore 2 ; b = b + 2 goto L2 ; Jump to the condition L2: iload 2 iload 1 if_icmplt L1 ; Jump into the body of the loop if condition is true. Otherwise, this will just carry on to printing stuff out. iload 3 ldc 0 if_icmpeq L1i ; if (c) (Actually says if (c==1)) iload 2 istore 1 ; a = b, body of the if goto L2i ; Jump to after the end of the else L1i: goto L2i ; No statements in the "else" block here L2i: iload 1 ; put a on the stack ready for printing out getstatic java/lang/System/out Ljava/io/PrintStream; swap invokevirtual java/io/PrintStream/println(I)V ; print a iload 2 ; put b on the stack ready for printing out getstatic java/lang/System/out Ljava/io/PrintStream; swap invokevirtual java/io/PrintStream/println(I)V ; print b iload 3 ; put c on the stack ready for printing out getstatic java/lang/System/out Ljava/io/PrintStream; swap invokevirtual java/io/PrintStream/println(I)V ; print c return .end method