1 2method Base$Inner.<init>(Base):void 3{ 4............................. begin block 1 ............................. 5 0| move-object v0, v4 6 1| move-object v1, v5 7 2| move-object v2, v0 8 3| move-object v3, v1 9 4| iput-object v3, v2, Base$Inner.this$0 10 6| move-object v2, v0 11 7| invoke-direct {v2}, java.lang.Object.<init>():void 12 10| return-void 13.............................. end block 1 .............................. 14} 15 16method Base$Nested.<init>():void 17{ 18............................. begin block 1 ............................. 19 0| move-object v0, v2 20 1| move-object v1, v0 21 2| invoke-direct {v1}, java.lang.Object.<init>():void 22 5| return-void 23.............................. end block 1 .............................. 24} 25 26method Base.<init>():void 27{ 28............................. begin block 1 ............................. 29 0| move-object v0, v2 30 1| move-object v1, v0 31 2| invoke-direct {v1}, java.lang.Object.<init>():void 32 5| return-void 33.............................. end block 1 .............................. 34} 35 36method Base.test(int):void 37{ 38............................. begin block 1 ............................. 39 0| move-object v0, v6 40 1| move v1, v7 41 2| invoke-static {}, Hello.printStackTrace():void 42 5| sget-object v2, java.lang.System.out 43 7| new-instance v3, java.lang.StringBuilder 44 9| move-object v5, v3 45 10| move-object v3, v5 46 11| move-object v4, v5 47 12| invoke-direct {v4}, java.lang.StringBuilder.<init>():void 48 15| const-string v4, "Base.test " 49 17| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder 50 20| move-result-object v3 51 21| move v4, v1 52 22| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(int):java.lang.StringBuilder 53 25| move-result-object v3 54 26| invoke-virtual {v3}, java.lang.StringBuilder.toString():java.lang.String 55 29| move-result-object v3 56 30| invoke-virtual {v2,v3}, java.io.PrintStream.println(java.lang.String):void 57 33| return-void 58.............................. end block 1 .............................. 59} 60 61method Derived.<init>():void 62{ 63............................. begin block 1 ............................. 64 0| move-object v0, v2 65 1| move-object v1, v0 66 2| invoke-direct {v1}, Base.<init>():void 67 5| return-void 68.............................. end block 1 .............................. 69} 70 71method Derived.test(int):void 72{ 73............................. begin block 1 ............................. 74 0| move-object v0, v6 75 1| move v1, v7 76 2| sget-object v2, java.lang.System.out 77 4| new-instance v3, java.lang.StringBuilder 78 6| move-object v5, v3 79 7| move-object v3, v5 80 8| move-object v4, v5 81 9| invoke-direct {v4}, java.lang.StringBuilder.<init>():void 82 12| const-string v4, "Derived.test " 83 14| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder 84 17| move-result-object v3 85 18| move v4, v1 86 19| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(int):java.lang.StringBuilder 87 22| move-result-object v3 88 23| invoke-virtual {v3}, java.lang.StringBuilder.toString():java.lang.String 89 26| move-result-object v3 90 27| invoke-virtual {v2,v3}, java.io.PrintStream.println(java.lang.String):void 91 30| return-void 92.............................. end block 1 .............................. 93} 94 95method Hello.<init>():void 96{ 97............................. begin block 1 ............................. 98 0| move-object v0, v2 99 1| move-object v1, v0 100 2| invoke-direct {v1}, java.lang.Object.<init>():void 101 5| return-void 102.............................. end block 1 .............................. 103} 104 105method Hello.main(java.lang.String[]):void 106{ 107............................. begin block 1 ............................. 108 0| move-object v0, v6 109 1| sget-object v2, java.lang.System.out 110 3| const-string v3, "-------------------------------------------------------\n" 111 5| const/4 v4, #+0 (0x00000000 | 0.00000) 112 6| new-array v4, v4, java.lang.Object[] 113 8| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 114 11| move-result-object v2 115 12| sget-object v2, java.lang.System.out 116 14| const-string v3, "Hello, world (original)" 117 16| invoke-virtual {v2,v3}, java.io.PrintStream.println(java.lang.String):void 118 19| sget-object v2, java.lang.System.out 119 21| const-string v3, "-------------------------------------------------------\n" 120 23| const/4 v4, #+0 (0x00000000 | 0.00000) 121 24| new-array v4, v4, java.lang.Object[] 122 26| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 123 29| move-result-object v2 124 30| new-instance v2, Base 125 32| move-object v5, v2 126 33| move-object v2, v5 127 34| move-object v3, v5 128 35| invoke-direct {v3}, Base.<init>():void 129 38| move-object v1, v2 130 39| move-object v2, v1 131 40| const/4 v3, #+1 (0x00000001 | 1.40130e-45) 132 41| invoke-virtual {v2,v3}, Base.test(int):void 133 44| sget-object v2, java.lang.System.out 134 46| const-string v3, "-------------------------------------------------------\n" 135 48| const/4 v4, #+0 (0x00000000 | 0.00000) 136 49| new-array v4, v4, java.lang.Object[] 137 51| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 138 54| move-result-object v2 139 55| new-instance v2, Derived 140 57| move-object v5, v2 141 58| move-object v2, v5 142 59| move-object v3, v5 143 60| invoke-direct {v3}, Derived.<init>():void 144 63| move-object v1, v2 145 64| move-object v2, v1 146 65| const/4 v3, #+2 (0x00000002 | 2.80260e-45) 147 66| invoke-virtual {v2,v3}, Base.test(int):void 148 69| return-void 149.............................. end block 1 .............................. 150} 151 152method Hello.printStackTrace():void 153{ 154............................. begin block 1 ............................. 155 0| new-instance v5, java.lang.Throwable 156 2| move-object v11, v5 157 3| move-object v5, v11 158 4| move-object v6, v11 159 5| invoke-direct {v6}, java.lang.Throwable.<init>():void 160 8| invoke-virtual {v5}, java.lang.Throwable.getStackTrace():java.lang.StackTraceElement[] 161 11| move-result-object v5 162 12| move-object v0, v5 163 13| move-object v5, v0 164 14| move-object v1, v5 165 15| move-object v5, v1 166 16| array-length v5, v5 167 17| move v2, v5 168 18| const/4 v5, #+0 (0x00000000 | 0.00000) 169 19| move v3, v5 170.............................. end block 1 .............................. 171............................. begin block 2 ............................. 172Label_1: 173 20| move v5, v3 174 21| move v6, v2 175 22| if-ge v5, v6, Label_2 176.............................. end block 2 .............................. 177............................. begin block 3 ............................. 178 24| move-object v5, v1 179 25| move v6, v3 180 26| aget-object v5, v5, v6 181 28| move-object v4, v5 182 29| sget-object v5, java.lang.System.out 183 31| const-string v6, " %s\n" 184 33| const/4 v7, #+1 (0x00000001 | 1.40130e-45) 185 34| new-array v7, v7, java.lang.Object[] 186 36| move-object v11, v7 187 37| move-object v7, v11 188 38| move-object v8, v11 189 39| const/4 v9, #+0 (0x00000000 | 0.00000) 190 40| move-object v10, v4 191 41| invoke-virtual {v10}, java.lang.StackTraceElement.toString():java.lang.String 192 44| move-result-object v10 193 45| aput-object v10, v8, v9 194 47| invoke-virtual {v5,v6,v7}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 195 50| move-result-object v5 196 51| add-int/lit8 v3, v3, #+1 (0x00000001 | 1.40130e-45) 197 53| goto Label_1 198.............................. end block 3 .............................. 199............................. begin block 4 ............................. 200Label_2: 201 54| return-void 202.............................. end block 4 .............................. 203} 204