| author | Christian Urban <urbanc@in.tum.de> | 
| Tue, 25 Sep 2018 20:50:42 +0100 | |
| changeset 561 | cf3e57e6fec7 | 
| parent 545 | 56e054d84be2 | 
| child 600 | e47db4abb695 | 
| permissions | -rw-r--r-- | 
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 1 | |
| 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 2 | .class public fib.fib | 
| 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 3 | .super java/lang/Object | 
| 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 4 | |
| 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 5 | .method public <init>()V | 
| 545 | 6 | aload_0 | 
| 7 | invokenonvirtual java/lang/Object/<init>()V | |
| 8 | return | |
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 9 | .end method | 
| 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 10 | |
| 545 | 11 | .method public static print(Ljava/lang/String;)V | 
| 12 | .limit locals 5 | |
| 13 | .limit stack 5 | |
| 14 | aload 0 | |
| 15 | getstatic java/lang/System/out Ljava/io/PrintStream; | |
| 16 | swap | |
| 17 | invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V | |
| 18 | return | |
| 207 
f824e1331fc6
added slides
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
93diff
changeset | 19 | .end method | 
| 
f824e1331fc6
added slides
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
93diff
changeset | 20 | |
| 545 | 21 | .method public static write(I)V | 
| 22 | .limit locals 1 | |
| 23 | .limit stack 2 | |
| 24 | getstatic java/lang/System/out Ljava/io/PrintStream; | |
| 25 | iload 0 | |
| 26 | invokevirtual java/io/PrintStream/println(I)V | |
| 27 | return | |
| 28 | .end method | |
| 29 | ||
| 30 | .method public static read()I | |
| 31 | .limit locals 10 | |
| 373 
b018234c9126
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
323diff
changeset | 32 | .limit stack 10 | 
| 211 
deece8c6cf3a
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
208diff
changeset | 33 | |
| 545 | 34 | ldc 0 | 
| 35 | istore 1 ; this will hold our final integer | |
| 36 | Label1: | |
| 37 | getstatic java/lang/System/in Ljava/io/InputStream; | |
| 38 | invokevirtual java/io/InputStream/read()I | |
| 39 | istore 2 | |
| 40 | iload 2 | |
| 41 | ldc 10 ; the newline delimiter | |
| 42 | isub | |
| 43 | ifeq Label2 | |
| 44 | iload 2 | |
| 45 | ldc 32 ; the space delimiter | |
| 46 | isub | |
| 373 
b018234c9126
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
323diff
changeset | 47 | ifeq Label2 | 
| 211 
deece8c6cf3a
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
208diff
changeset | 48 | |
| 545 | 49 | iload 2 | 
| 50 | ldc 48 ; we have our digit in ASCII, have to subtract it from 48 | |
| 51 | isub | |
| 52 | ldc 10 | |
| 53 | iload 1 | |
| 54 | imul | |
| 55 | iadd | |
| 56 | istore 1 | |
| 57 | goto Label1 | |
| 58 | Label2: | |
| 59 | ;when we come here we have our integer computed in local variable 1 | |
| 60 | iload 1 | |
| 61 | ireturn | |
| 211 
deece8c6cf3a
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
208diff
changeset | 62 | .end method | 
| 207 
f824e1331fc6
added slides
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
93diff
changeset | 63 | |
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 64 | .method public static main([Ljava/lang/String;)V | 
| 545 | 65 | .limit locals 200 | 
| 66 | .limit stack 200 | |
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 67 | |
| 545 | 68 | ldc "Fib" | 
| 69 | invokestatic fib/fib/print(Ljava/lang/String;)V | |
| 70 | invokestatic fib/fib/read()I | |
| 71 | istore 0 | |
| 72 | ldc 0 | |
| 73 | istore 1 | |
| 74 | ldc 1 | |
| 75 | istore 2 | |
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 76 | |
| 545 | 77 | Loop_start_1: | 
| 78 | ||
| 79 | iload 0 | |
| 80 | ldc 0 | |
| 81 | if_icmple Loop_end_0 | |
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 82 | |
| 545 | 83 | iload 2 | 
| 84 | istore 3 | |
| 85 | iload 1 | |
| 86 | iload 2 | |
| 87 | iadd | |
| 88 | istore 2 | |
| 89 | iload 3 | |
| 90 | istore 1 | |
| 91 | iload 0 | |
| 92 | ldc 1 | |
| 93 | isub | |
| 94 | istore 0 | |
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 95 | |
| 545 | 96 | goto Loop_start_1 | 
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 97 | |
| 545 | 98 | Loop_end_0: | 
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 99 | |
| 545 | 100 | ldc "Result" | 
| 101 | invokestatic fib/fib/print(Ljava/lang/String;)V | |
| 102 | iload 2 | |
| 103 | invokestatic fib/fib/write(I)V | |
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 104 | |
| 545 | 105 | return | 
| 93 
4794759139ea
better organised
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 106 | .end method |