smali文件语法参考

SvenCorcora 12年前
   <p> </p>    <h2> </h2>    <h2>Dalvik opcodes</h2>    <p>表中的VX值表示的Dalvik寄存器。根据不同的指令,16,256或64K寄存器可以访问。对long和double值的操作使用两个寄存器,例如在V0的注册解决占地V0和V1的寄存器双重价值。</p>    <p>布尔值存储真正的为1和0为假。被翻译成整数运算的布尔操作。</p>    <p>HIG-endian格式中所有的例子,如0F00 0A00 0F,00,0A,00顺序编码。</p>    <p>注意有没有解释/在一些指令的例子。这意味着,我没有看到指令“在野外”,它的存在/名称只能从已知  <a href="/misc/goto?guid=4959673124404871869" rel="nofollow">的Android操作码常数列表</a>。</p>    <table border="1" cellpadding="2" cellspacing="2">     <tbody>      <tr>       <td>Opcode (hex)</td>       <td>Opcode name</td>       <td>Explanation</td>       <td>Example</td>      </tr>      <tr>       <td>00</td>       <td>nop</td>       <td>No operation</td>       <td>0000 - nop</td>      </tr>      <tr>       <td>01</td>       <td>move vx,vy</td>       <td>Moves the content of vy into vx. Both registers must be in the first 256 register range.</td>       <td>0110 - move v0, v1<br> Moves v1 into v0.</td>      </tr>      <tr>       <td>02</td>       <td>move/from16 vx,vy</td>       <td>Moves the content of vy into vx. vy may be in the 64k register range while vx is one of the first 256 registers.</td>       <td>0200 1900 - move/from16 v0, v25<br> Moves v25 into v0.</td>      </tr>      <tr>       <td>03</td>       <td>move/16</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>04</td>       <td>move-wide</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>05</td>       <td>move-wide/from16 vx,vy</td>       <td>Moves a long/double value from vy to vx. vy may be in the 64k register range while wx is one of the first 256 registers.</td>       <td>0516 0000 - move-wide/from16 v22, v0<br> Moves v0 into v22.</td>      </tr>      <tr>       <td>06</td>       <td>move-wide/16</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>07</td>       <td>move-object vx,vy</td>       <td>Moves the object reference from vy to vx.</td>       <td>0781 - move-object v1, v8<br> Moves the object reference in v8 to v1.</td>      </tr>      <tr>       <td>08</td>       <td>move-object/from16 vx,vy</td>       <td>Moves the object reference from vy to vx, vy can address 64k registers and vx can address 256 registers.</td>       <td>0801 1500 - move-object/from16 v1, v21<br> Move the object reference in v21 to v1.</td>      </tr>      <tr>       <td>09</td>       <td>move-object/16</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>0A</td>       <td>move-result vx</td>       <td>Move the result value of the previous method invocation into vx.</td>       <td>0A00 - move-result v0<br> Move the return value of a previous method invocation into v0.</td>      </tr>      <tr>       <td>0B</td>       <td>move-result-wide vx</td>       <td>Move the long/double result value of the previous method invocation into vx,vx+1.</td>       <td>0B02 - move-result-wide v2<br> Move the long/double result value of the previous method invocation into v2,v3.</td>      </tr>      <tr>       <td>0C</td>       <td>move-result-object vx</td>       <td>Move the result object reference of the previous method invocation into vx.</td>       <td>0C00 - move-result-object v0</td>      </tr>      <tr>       <td>0D</td>       <td>move-exception vx</td>       <td>Move the exception object reference thrown during a method invocation into vx.</td>       <td>0D19 - move-exception v25</td>      </tr>      <tr>       <td>0E</td>       <td>return-void</td>       <td>Return without a return value</td>       <td>0E00 - return-void</td>      </tr>      <tr>       <td>0F</td>       <td>return vx</td>       <td>Return with vx return value</td>       <td>0F00 - return v0<br> Returns with return value in v0.</td>      </tr>      <tr>       <td>10</td>       <td>return-wide vx</td>       <td>Return with double/long result in vx,vx+1.</td>       <td>1000 - return-wide v0<br> Returns with a double/long value in v0,v1.</td>      </tr>      <tr>       <td>11</td>       <td>return-object vx</td>       <td>Return with vx object reference value.</td>       <td>1100 - return-object v0<br> Returns with object reference value in v0</td>      </tr>      <tr>       <td>12</td>       <td>const/4 vx,lit4</td>       <td>Puts the 4 bit constant into vx</td>       <td>1221 - const/4 v1, #int2<br> Moves literal 2 into v1. The destination register is in the lower 4 bit in the second byte, the literal 2 is in the higher 4 bit.</td>      </tr>      <tr>       <td>13</td>       <td>const/16 vx,lit16</td>       <td>Puts the 16 bit constant into vx</td>       <td>1300 0A00 - const/16 v0, #int 10<br> Puts the literal constant of 10 into v0.</td>      </tr>      <tr>       <td>14</td>       <td>const vx, lit32</td>       <td>Puts the integer constant into vx</td>       <td>1400 4E61 BC00 - const v0, #12345678 // #00BC614E<br> Moves literal 12345678 into v0.</td>      </tr>      <tr>       <td>15</td>       <td>const/high16 v0, lit16</td>       <td>Puts the 16 bit constant into the topmost bits of the register. Used to initialize float values.</td>       <td>1500 2041 - const/high16 v0, #float 10.0 // #41200000<br> Moves the floating literal of 10.0 into v0. The 16 bit literal in the instruction carries the top 16 bits of the floating point number.</td>      </tr>      <tr>       <td>16</td>       <td>const-wide/16 vx, lit16</td>       <td>Puts the integer constant into vx and vx+1 registers, expanding the integer constant into a long constant..</td>       <td>1600 0A00 - const-wide/16 v0, #long 10<br> Moves literal 10 into v0 and v1 registers.</td>      </tr>      <tr>       <td>17</td>       <td>const-wide/32 vx, lit32</td>       <td>Puts the 32 bit constant into vx and vx+1 registers, expanding the integer constant into a long constant.</td>       <td>1702 4e61 bc00 - const-wide/32 v2, #long 12345678 // #00bc614e<br> Puts #12345678 into v2 and v3 registers.</td>      </tr>      <tr>       <td>18</td>       <td>const-wide vx, lit64</td>       <td>Puts the 64 bit constant into vx and vx+1 registers.</td>       <td>1802 874b 6b5d 54dc 2b00- const-wide v2, #long 12345678901234567 // #002bdc545d6b4b87<br> Puts #12345678901234567 into v2 and v3 registers.</td>      </tr>      <tr>       <td>19</td>       <td>const-wide/high16 vx,lit16</td>       <td>Puts the 16 bit constant into the highest 16 bit of vx and vx+1 registers. Used to initialize double values.</td>       <td>1900 2440 - const-wide/high16 v0, #double 10.0 // #402400000<br> Puts the double constant of 10.0 into v0 register.</td>      </tr>      <tr>       <td>1A</td>       <td>const-string vx,string_id</td>       <td>Puts reference to a string constant identified by string_id into vx.</td>       <td>1A08 0000 - const-string v8, "" // string<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a><br> Puts reference to string<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a> (entry #0 in the string table) into v8.</td>      </tr>      <tr>       <td>1B</td>       <td>const-string-jumbo</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>1C</td>       <td>const-class vx,type_id</td>       <td>Moves the class object of a class identified by type_id (e.g. Object.class) into vx.</td>       <td>1C00 0100 - const-class v0, Test3 // type<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a><br> Moves reference to Test3.class (entry#1 in the type id table) into</td>      </tr>      <tr>       <td>1D</td>       <td>monitor-enter vx</td>       <td>Obtains the monitor of the object referenced by vx.</td>       <td>1D03 - monitor-enter v3<br> Obtains the monitor of the object referenced by v3.</td>      </tr>      <tr>       <td>1E</td>       <td>monitor-exit</td>       <td>Releases the monitor of the object referenced by vx.</td>       <td>1E03 - monitor-exit v3<br> Releases the monitor of the object referenced by v3.</td>      </tr>      <tr>       <td>1F</td>       <td>check-cast vx, type_id</td>       <td>Checks whether the object reference in vx can be cast to an instance of a class referenced by type_id. Throws ClassCastException if the cast is not possible, continues execution otherwise.</td>       <td>1F04 0100 - check-cast v4, Test3 // type<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a><br> Checks whether the object reference in v4 can be cast to type<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a> (entry #1 in the type id table)</td>      </tr>      <tr>       <td>20</td>       <td>instance-of vx,vy,type_id</td>       <td>Checks whether vy is instance of a class identified by type_id. Sets vx non-zero if it is, 0 otherwise.</td>       <td>2040 0100 - instance-of v0, v4, Test3 // type<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a><br> Checks whether the object reference in v4 is an instance of type<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a> (entry #1 in the type id table). Sets v0 to non-zero if v4 is instance of Test3, 0 otherwise.</td>      </tr>      <tr>       <td>21</td>       <td>array-length vx,vy</td>       <td>Calculates the number of elements of the array referenced by vy and puts the length value into vx.</td>       <td>2111 - array-length v1, v1<br> Calculates the number of elements of the array referenced by v1 and puts the result into v1.</td>      </tr>      <tr>       <td>22</td>       <td>new-instance vx,type</td>       <td>Instantiates an object type and puts the reference of the newly created instance into vx.</td>       <td>2200 1500 - new-instance v0, java.io.FileInputStream // type@0015<br> Instantiates type@0015 (entry #15H in the type table) and puts its reference into v0.</td>      </tr>      <tr>       <td>23</td>       <td>new-array vx,vy,type_id</td>       <td>Generates a new array of type_id type and vy element size and puts the reference to the array into vx.</td>       <td>2312 2500 - new-array v2, v1, char[] // type@0025<br> Generates a new array of type@0025 type and v1 size and puts the reference to the new array into v2.</td>      </tr>      <tr>       <td>24</td>       <td>filled-new-array {parameters},type_id</td>       <td>Generates a new array of type_id and fills it with the parameters<sup>5</sup>. Reference to the newly generated array can be obtained by a move-result-object instruction, immediately following the filled-new-array instruction.</td>       <td>2420 530D 0000 - filled-new-array {v0,v0},[I // type@0D53<br> Generates a new array of type@0D53. The array's size will be 2 and both elements will be filled with the contents of v0 register.</td>      </tr>      <tr>       <td>25</td>       <td>filled-new-array-range {vx..vy},type_id</td>       <td>Generates a new array of type_id and fills it with a range of parameters. Reference to the newly generated array can be obtained by a move-result-object instruction, immediately following the filled-new-array instruction.</td>       <td>2503 0600 1300 - filled-new-array/range {v19..v21}, [B // type@0006<br> Generates a new array of type@0D53. The array's size will be 3 and the elements will be filled using the v19,v20 and v21 registers<sup>4</sup>.</td>      </tr>      <tr>       <td>26</td>       <td>fill-array-data vx,array_data_offset</td>       <td>Fills the array referenced by vx with the static data. The location of the static data is the sum of  the position of the current instruction and the offset</td>       <td>2606 2500 0000 - fill-array-data v6, 00e6 // +0025<br> Fills the array referenced by v0 with the static data at current instruction+25H words location. The offset is expressed as a 32-bit number. The static data is stored in the following format:<br> 0003 // Table type: static array data<br> 0400 // Byte per array element (in this case, 4 byte integers)<br> 0300 0000 // Number of elements in the table<br> 0100 0000  // Element #0: integer 1<br> 0200 0000 // Element #1: integer 2<br> 0300 0000 // Element #2: integer3</td>      </tr>      <tr>       <td>27</td>       <td>throw vx</td>       <td>Throws an exception object. The reference of the exception object is in vx.</td>       <td>2700 - throw v0<br> Throws an exception. The exception object reference is in v0.</td>      </tr>      <tr>       <td>28</td>       <td>goto target</td>       <td>Unconditional jump by short offset<sup>2</sup>.</td>       <td>28F0 - goto 0005 // -0010<br> Jumps to current position-16 words (hex 10). 0005 is the label of the target instruction.</td>      </tr>      <tr>       <td>29</td>       <td>goto/16 target</td>       <td>Unconditional jump by 16 bit offset<sup>2</sup>.</td>       <td>2900 0FFE - goto/16 002f // -01f1<br> Jumps to the current position-1F1H words. 002F is the label of the target instruction.</td>      </tr>      <tr>       <td>2A</td>       <td>goto/32 target</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>2B</td>       <td>packed-switch vx,table</td>       <td>Implements a switch statement where the case constants are close to each other. The instruction uses an index table. vx indexes into this table to find the offset of the instruction for a particular case. If vx falls out of the index table, the execution continues on the next instruction (default case).</td>       <td>2B02 0C00 0000 - packed-switch v2, 000c // +000c<br> Execute a packed switch according to the switch argument in v2. The position of the index table is at current instruction+0CH words. The table looks like the following:<br> 0001 // Table type: packed switch table<br> 0300 // number of elements<br> 0000 0000 // element base<br> 0500 0000  0: 00000005 // case 0: +00000005<br> 0700 0000  1: 00000007 // case 1: +00000007<br> 0900 0000  2: 00000009 // case 2: +00000009</td>      </tr>      <tr>       <td>2C</td>       <td>sparse-switch vx,table</td>       <td>Implements a switch statement with sparse case table. The instruction uses a lookup table with case constants and offsets for each case constant. If there is no match in the table, execution continues on the next instruction (default case).</td>       <td>2C02 0c00 0000 - sparse-switch v2, 000c // +000c<br> Execute a sparse switch according to the switch argument in v2. The position of the lookup table is at current instruction+0CH words. The table looks like the following.<br> 0002 // Table type: sparse switch table<br> 0300 // number of elements<br> 9cff ffff // first case: -100<br> fa00 0000 // second case constant: 250<br> e803 0000 // third case constant: 1000<br> 0500 0000 // offset for the first case constant: +5<br> 0700 0000 // offset for the second case constant: +7<br> 0900 0000 // offset for the third case constant: +9</td>      </tr>      <tr>       <td>2D</td>       <td>cmpl-float</td>       <td>Compares the float values in vy and vz and sets the integer value in vx accordingly<sup>3</sup></td>       <td>2D00 0607 - cmpl-float v0, v6, v7<br> Compares the float values in v6 and v7 then sets v0 accordingly. NaN bias is less-than, the instruction will return -1 if any of the parameters is NaN.</td>      </tr>      <tr>       <td>2E</td>       <td>cmpg-float vx, vy, vz</td>       <td>Compares the float values in vy and vz and sets the integer value in vx accordingly<sup>3</sup>.</td>       <td>2E00 0607 - cmpg-float v0, v6, v7<br> Compares the float values in v6 and v7 then sets v0 accordingly. NaN bias is greater-than, the instruction will return 1 if any of the parameters is NaN.</td>      </tr>      <tr>       <td>2F</td>       <td>cmpl-double vx,vy,vz</td>       <td>Compares the double values in vy and vz<sup>2</sup> and sets the integer value in vx accordingly<sup>3</sup>.</td>       <td>2F19 0608 - cmpl-double v25, v6, v8<br> Compares the double values in v6,v7 and v8,v9 and sets v25 accordingly. NaN bias is less-than, the instruction will return -1 if any of the parameters is NaN.</td>      </tr>      <tr>       <td>30</td>       <td>cmpg-double vx, vy, vz</td>       <td>Compares the double values in vy and vz<sup>2</sup> and sets the integer value in vx accordingly<sup>3</sup>.</td>       <td>3000 080A - cmpg-double v0, v8, v10<br> Compares the double values in v8,v9 and v10,v11 then sets v0 accordingly. NaN bias is greater-than, the instruction will return 1 if any of the parameters is NaN.</td>      </tr>      <tr>       <td>31</td>       <td>cmp-long vx, vy, vz</td>       <td>Compares the long values in vy and vz and sets the integer value in vx accordingly<sup>3</sup>.</td>       <td>3100 0204 - cmp-long v0, v2, v4<br> Compares the long values in v2 and v4 then sets v0 accordingly.</td>      </tr>      <tr>       <td>32</td>       <td>if-eq vx,vy,target</td>       <td>Jumps to target if vx==vy<sup>2</sup>. vx and vy are integer values.</td>       <td>32b3 6600 - if-eq v3, v11, 0080 // +0066<br> Jumps to the current position+66H words if v3==v11. 0080 is the label of the target instruction.</td>      </tr>      <tr>       <td>33</td>       <td>if-ne vx,vy,target</td>       <td>Jumps to target if vx!=vy<sup>2</sup>. vx and vy are integer values.</td>       <td>33A3 1000 - if-ne v3, v10, 002c // +0010<br> Jumps to the current position+10H words if v3!=v10. 002c is the label of the target instruction.</td>      </tr>      <tr>       <td>34</td>       <td>if-lt vx,vy,target</td>       <td>Jumps to target is vx<vy<sup>2</sup>. vx and vy are integer values.</td>       <td>3432 CBFF - if-lt v2, v3, 0023 // -0035<br> Jumps to the current position-35H words if v2<v3. 0023 is the label of the target instruction.</td>      </tr>      <tr>       <td>35</td>       <td>if-ge vx, vy,target</td>       <td>Jumps to target if vx>=vy<sup>2</sup>. vx and vy are integer values.</td>       <td>3510 1B00 - if-ge v0, v1, 002b // +001b<br> Jumps to the current position+1BH words if v0>=v1. 002b is the label of the target instruction.</td>      </tr>      <tr>       <td>36</td>       <td>if-gt vx,vy,target</td>       <td>Jumps to target if vx>vy<sup>2</sup>. vx and vy are integer values.</td>       <td>3610 1B00 - if-ge v0, v1, 002b // +001b<br> Jumps to the current position+1BH words if v0>v1. 002b is the label of the target instruction.</td>      </tr>      <tr>       <td>37</td>       <td>if-le vx,vy,target</td>       <td>Jumps to target if vx<=vy<sup>2</sup>. vx and vy are integer values.</td>       <td>3756 0B00 - if-le v6, v5, 0144 // +000b<br> Jumps to the current position+0BH words if v6<=v5. 0144 is the label of the target instruction.</td>      </tr>      <tr>       <td>38</td>       <td>if-eqz vx,target</td>       <td>Jumps to target if vx==0<sup>2</sup>. vx is an integer value.</td>       <td>3802 1900 - if-eqz v2, 0038 // +0019<br> Jumps to the current position+19H words if v2==0. 0038 is the label of the target instruction.</td>      </tr>      <tr>       <td>39</td>       <td>if-nez vx,target</td>       <td>Checks vx and jumps if vx is nonzero<sup>2</sup>.</td>       <td>3902 1200 - if-nez v2, 0014 // +0012<br> Jumps to current position+18 words (hex 12) if v2 is nonzero. 0014 is the label of the target instruction.</td>      </tr>      <tr>       <td>3A</td>       <td>if-ltz vx,target</td>       <td>Checks vx and jumps if vx<0<sup>2</sup>.</td>       <td>3A00 1600 - if-ltz v0, 002d // +0016<br> Jumps to the current position+16H words if v0<0. 002d is the label of the target instruction.</td>      </tr>      <tr>       <td>3B</td>       <td>if-gez vx,target</td>       <td>Checks vx and jumps if vx>=0<sup>2</sup>.</td>       <td>3B00 1600 - if-gez v0, 002d // +0016<br> Jumps to the current position+16H words if v0 >=0. 002d is the label of the target instruction.</td>      </tr>      <tr>       <td>3C</td>       <td>if-gtz vx,target</td>       <td>Checks vx and jumps if vx>0<sup>2</sup>.</td>       <td>3C00 1D00 - if-gtz v0, 004a // +001d<br> Jumps to the current position+1DH words if v0>0. 004A is the label of the target instruction.</td>      </tr>      <tr>       <td>3D</td>       <td>if-lez vx,target</td>       <td>Checks vx and jumps if vx<=0<sup>2</sup>.</td>       <td>3D00 1D00 - if-lez v0, 004a // +001d<br> Jumps to the current position+1DH words if v0<=0. 004A is the label of the target instruction.</td>      </tr>      <tr>       <td>3E</td>       <td>unused_3E</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>3F</td>       <td>unused_3F</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>40</td>       <td>unused_40</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>41</td>       <td>unused_41</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>42</td>       <td>unused_42</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>43</td>       <td>unused_43</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>44</td>       <td>aget vx,vy,vz</td>       <td>Gets an integer value of an object reference array into vx. The array is referenced by vy and is indexed by vz.</td>       <td>4407 0306 - aget v7, v3, v6<br> Gets an integer array element. The array is referenced by v3 and the element is indexed by v6. The element will be put into v7.</td>      </tr>      <tr>       <td>45</td>       <td>aget-wide vx,vy,vz</td>       <td>Gets a long/double value of long/double array into vx,vx+1. The array is referenced by vy and is indexed by vz.</td>       <td>4505 0104 - aget-wide v5, v1, v4<br> Gets a long/double array element. The array is referenced by v1 and the element is indexed by v4. The element will be put into v5,v6.</td>      </tr>      <tr>       <td>46</td>       <td>aget-object vx,vy,vz</td>       <td>Gets an object reference value of an object reference array into vx. The array is referenced by vy and is indexed by vz.</td>       <td>4602 0200 - aget-object v2, v2, v0<br> Gets an object reference array element. The array is referenced by v2 and the element is indexed by v0. The element will be put into v2.</td>      </tr>      <tr>       <td>47</td>       <td>aget-boolean vx,vy,vz</td>       <td>Gets a boolean value of a boolean array into vx. The array is referenced by vy and is indexed by vz.</td>       <td>4700 0001 - aget-boolean v0, v0, v1<br> Gets a boolean array element. The array is referenced by v0 and the element is indexed by v1. The element will be put into v0.</td>      </tr>      <tr>       <td>48</td>       <td>aget-byte vx,vy,vz</td>       <td>Gets a byte value of a byte array into vx. The array is referenced by vy and is indexed by vz.</td>       <td>4800 0001 - aget-byte v0, v0, v1<br> Gets a byte array element. The array is referenced by v0 and the element is indexed by v1. The element will be put into v0.</td>      </tr>      <tr>       <td>49</td>       <td>aget-char vx, vy,vz</td>       <td>Gets a char value  of a character array into vx. The element is indexed by vz, the array object is referenced by vy</td>       <td>4905 0003 - aget-char v5, v0, v3<br> Gets a character array element. The array is referenced by v0 and the element is indexed by v3. The element will be put into v5.</td>      </tr>      <tr>       <td>4A</td>       <td>aget-short vx,vy,vz</td>       <td>Gets a short value  of a short array into vx. The element is indexed by vz, the array object is referenced by vy.</td>       <td>4A00 0001 - aget-short v0, v0, v1<br> Gets a short array element. The array is referenced by v0 and the element is indexed by v1. The element will be put into v0.</td>      </tr>      <tr>       <td>4B</td>       <td>aput vx,vy,vz</td>       <td>Puts the integer value in vx into an element of an integer array. The element is indexed by vz, the array object is referenced by vy.</td>       <td>4B00 0305 - aput v0, v3, v5<br> Puts the integer value in v2 into an integer array referenced by v0. The target array element is indexed by v1.</td>      </tr>      <tr>       <td>4C</td>       <td>aput-wide vx,vy,vz</td>       <td>Puts the double/long value in vx,vx+1 into a double/long array. The array is referenced by vy, the element is indexed by vz.</td>       <td>4C05 0104 - aput-wide v5, v1, v4<br> Puts the double/long value in v5,v6 into a double/long array referenced by v1. The target array element is indexed by v4.</td>      </tr>      <tr>       <td>4D</td>       <td>aput-object vx,vy,vz</td>       <td>Puts the object reference value in vx into an element of an object reference array. The element is indexed by vz, the array object is referenced by vy.</td>       <td>4D02 0100 - aput-object v2, v1, v0<br> Puts the object reference value in v2 into an object reference array referenced by v0. The target array element is indexed by v1.</td>      </tr>      <tr>       <td>4E</td>       <td>aput-boolean vx,vy,vz</td>       <td>Puts the boolean value in vx into an element of a boolean array. The element is indexed by vz, the array object is referenced by vy.</td>       <td>4E01 0002 - aput-boolean v1, v0, v2<br> Puts the boolean value in v1 into an object reference array referenced by v0. The target array element is indexed by v2.</td>      </tr>      <tr>       <td>4F</td>       <td>aput-byte vx,vy,vz</td>       <td>Puts the byte value in vx into an element of a byte array. The element is indexed by vz, the array object is referenced by vy.</td>       <td>4F02 0001 - aput-byte v2, v0, v1<br> Puts the boolean value in v2 into a byte array referenced by v0. The target array element is indexed by v1.</td>      </tr>      <tr>       <td>50</td>       <td>aput-char vx,vy,vz</td>       <td>Puts the char value in vx into an element of a character array. The element is indexed by vz, the array object is referenced by vy.</td>       <td>5003 0001 - aput-char v3, v0, v1<br> Puts the character value in v3 into a character array referenced by v0. The target array element is indexed by v1.</td>      </tr>      <tr>       <td>51</td>       <td>aput-short vx,vy,vz</td>       <td>Puts the short value in vx into an element of a short array. The element is indexed by vz, the array object is referenced by vy.</td>       <td>5102 0001 - aput-short v2, v0, v1<br> Puts the short value in v2 into a character array referenced by v0. The target array element is indexed by v1.</td>      </tr>      <tr>       <td>52</td>       <td>iget vx, vy, field_id</td>       <td>Reads an instance field into vx. The instance is referenced by vy.</td>       <td>5210 0300 - iget v0, v1, Test2.i6:I // field@0003<br> Reads field@0003 into v0 (entry #3 in the field id table). The instance is referenced by v1.</td>      </tr>      <tr>       <td>53</td>       <td>iget-wide vx,vy,field_id</td>       <td>Reads an instance field into vx<sup>1</sup>. The instance is referenced by vy.</td>       <td>5320 0400 - iget-wide v0, v2, Test2.l0:J // field@0004<br> Reads field@0004 into v0 and v1 registers (entry #4 in the field id table). The instance is referenced by v2.</td>      </tr>      <tr>       <td>54</td>       <td>iget-object vx,vy,field_id</td>       <td>Reads an object reference instance field into vx. The instance is referenced by vy.</td>       <td>iget-object v1, v2, LineReader.fis:Ljava/io/FileInputStream; // field@0002<br> Reads field@0002 into v1  (entry #2 in the field id table). The instance is referenced by v2.</td>      </tr>      <tr>       <td>55</td>       <td>iget-boolean vx,vy,field_id</td>       <td>Reads a boolean instance field into vx. The instance is referenced by vy.</td>       <td>55FC 0000 - iget-boolean v12, v15, Test2.b0:Z // field<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a><br> Reads the boolean field<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a> into v12 register (entry #0 in the field id table). The instance is referenced by v15.</td>      </tr>      <tr>       <td>56</td>       <td>iget-byte vx,vy,field_id</td>       <td>Reads a byte instance field into vx. The instance is referenced by vy.</td>       <td>5632 0100 - iget-byte v2, v3, Test3.bi1:B // field<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a><br> Reads the char field<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a> into v2 register (entry #1 in the field id table). The instance is referenced by v3.</td>      </tr>      <tr>       <td>57</td>       <td>iget-char vx,vy,field_id</td>       <td>Reads a char instance field into vx. The instance is referenced by vy.</td>       <td>5720 0300 - iget-char v0, v2, Test3.ci1:C // field@0003<br> Reads the char field@0003 into v0 register (entry #3 in the field id table). The instance is referenced by v2.</td>      </tr>      <tr>       <td>58</td>       <td>iget-short vx,vy,field_id</td>       <td>Reads a short instance field into vx. The instance is referenced by vy.</td>       <td>5830 0800 - iget-short v0, v3, Test3.si1:S // field@0008<br> Reads the short field@0008 into v0 register (entry #8 in the field id table). The instance is referenced by v3.</td>      </tr>      <tr>       <td>59</td>       <td>iput vx,vy, field_id</td>       <td>Puts vx into an instance field. The instance is referenced by vy.</td>       <td>5920 0200 - iput v0,v2, Test2.i6:I // field@0002<br> Stores v0 into field@0002 (entry #2 in the field id table). The instance is referenced by v2.</td>      </tr>      <tr>       <td>5A</td>       <td>iput-wide vx,vy, field_id</td>       <td>Puts the wide value located in vx and vx+1 registers into an instance field. The instance is referenced by vy.</td>       <td>5A20 0000 - iput-wide v0,v2, Test2.d0:D // field<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a><br> Stores the wide value in v0, v1 registers into field<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a> (entry #0 in the field id table). The instance is referenced by v2.</td>      </tr>      <tr>       <td>5B</td>       <td>iput-object vx,vy,field_id</td>       <td>Puts the object reference in vx into an instance field. The instance is referenced by vy.</td>       <td>5B20 0000 - iput-object v0, v2, LineReader.bis:Ljava/io/BufferedInputStream; // field<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a><br> Stores the object reference in v0 into field<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a> (entry #0 in the field table). The instance is referenced by v2.</td>      </tr>      <tr>       <td>5C</td>       <td>iput-boolean vx,vy, field_id</td>       <td>Puts the boolean value located in vx into an instance field. The instance is referenced by vy.</td>       <td>5C30 0000 - iput-boolean v0, v3, Test2.b0:Z // field<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a><br> Puts the boolean value in v0 into field<a class="referer" href="/misc/goto?guid=4959673124498203037">@0000</a> (entry #0 in the field id table). The instance is referenced by v3.</td>      </tr>      <tr>       <td>5D</td>       <td>iput-byte vx,vy,field_id</td>       <td>Puts the byte value located in vx into an instance field. The instance is referenced by vy.</td>       <td>5D20 0100 - iput-byte v0, v2, Test3.bi1:B // field<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a><br> Puts the boolean value in v0 into field<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a> (entry #1 in the field id table). The instance is referenced by v2.</td>      </tr>      <tr>       <td>5E</td>       <td>iput-char vx,vy,field_id</td>       <td>Puts the char value located in vx into an instance field. The instance is referenced by vy.</td>       <td>5E20 0300 - iput-char v0, v2, Test3.ci1:C // field@0003<br> Puts the char value in v0 into field@0003 (entry #3 in the field id table). The instance is referenced by v2.</td>      </tr>      <tr>       <td>5F</td>       <td>iput-short vx,vy,field_id</td>       <td>Puts the short value located in vx into an instance field. The instance is referenced by vy.</td>       <td>5F21 0800 - iput-short v1, v2, Test3.si1:S // field@0008<br> Puts the short value in v1 into field@0008 (entry #8 in the field id table). The instance is referenced by v2.</td>      </tr>      <tr>       <td>60</td>       <td>sget vx,field_id</td>       <td>Reads the integer field identified by the field_id into vx.</td>       <td>6000 0700 - sget v0, Test3.is1:I // field@0007<br> Reads field@0007 (entry #7 in the field id table) into v0.</td>      </tr>      <tr>       <td>61</td>       <td>sget-wide vx, field_id</td>       <td>Reads the static field identified by the field_id into vx and vx+1 registers.</td>       <td>6100 0500 - sget-wide v0, Test2.l1:J // field@0005<br> Reads field@0005 (entry #5 in the field id table) into v0 and v1 registers.</td>      </tr>      <tr>       <td>62</td>       <td>sget-object vx,field_id</td>       <td>Reads the object reference field identified by the field_id into vx.</td>       <td>6201 0C00 - sget-object v1, Test3.os1:Ljava/lang/Object; // field@000c<br> Reads field@000c (entry #CH in the field id table) into v1.</td>      </tr>      <tr>       <td>63</td>       <td>sget-boolean vx,field_id</td>       <td>Reads the boolean static field identified by the field_id into vx.</td>       <td>6300 0C00 - sget-boolean v0, Test2.sb:Z // field@000c<br> Reads boolean field@000c (entry #12 in the field id table) into v0.</td>      </tr>      <tr>       <td>64</td>       <td>sget-byte vx,field_id</td>       <td>Reads the byte static field identified by the field_id into vx.</td>       <td>6400 0200 - sget-byte v0, Test3.bs1:B // field@0002<br> Reads byte field@0002 (entry #2 in the field id table) into v0.</td>      </tr>      <tr>       <td>65</td>       <td>sget-char vx,field_id</td>       <td>Reads the char static field identified by the field_id into vx.</td>       <td>6500 0700 - sget-char v0, Test3.cs1:C // field@0007<br> Reads byte field@0007 (entry #7 in the field id table) into v0.</td>      </tr>      <tr>       <td>66</td>       <td>sget-short vx,field_id</td>       <td>Reads the short static field identified by the field_id into vx.</td>       <td>6600 0B00 - sget-short v0, Test3.ss1:S // field@000b<br> Reads short field@000b (entry #BH in the field id table) into v0.</td>      </tr>      <tr>       <td>67</td>       <td>sput vx, field_id</td>       <td>Puts vx into a static field.</td>       <td>6700 0100 - sput v0, Test2.i5:I // field<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a><br> Stores v0 into field<a class="referer" href="/misc/goto?guid=4959673124599566816">@0001</a> (entry #1 in the field id table).</td>      </tr>      <tr>       <td>68</td>       <td>sput-wide vx, field_id</td>       <td>Puts vx and vx+1 into a static field.</td>       <td>6800 0500 - sput-wide v0, Test2.l1:J // field@0005<br> Puts the long value in v0 and v1 into the field@0005 static field (entry #5 in the field id table).</td>      </tr>      <tr>       <td>69</td>       <td>sput-object vx,field_id</td>       <td>Puts object reference in vx into a static field.</td>       <td>6900 0c00 - sput-object v0, Test3.os1:Ljava/lang/Object; // field@000c<br> Puts the object reference value in v0 into the field@000c static field (entry #CH in the field id table).</td>      </tr>      <tr>       <td>6A</td>       <td>sput-boolean vx,field_id</td>       <td>Puts boolean value in vx into a static field.</td>       <td>6A00 0300 - sput-boolean v0, Test3.bls1:Z // field@0003<br> Puts the byte value in v0 into the field@0003 static field (entry #3 in the field id table).</td>      </tr>      <tr>       <td>6B</td>       <td>sput-byte vx,field_id</td>       <td>Puts byte value in vx into a static field.</td>       <td>6B00 0200 - sput-byte v0, Test3.bs1:B // field@0002<br> Puts the byte value in v0 into the field@0002 static field (entry #2 in the field id table).</td>      </tr>      <tr>       <td>6C</td>       <td>sput-char vx,field_id</td>       <td>Puts char value in vx into a static field.</td>       <td>6C01 0700 - sput-char v1, Test3.cs1:C // field@0007<br> Puts the char value in v1 into the field@0007 static field (entry #7 in the field id table).</td>      </tr>      <tr>       <td>6D</td>       <td>sput-short vx,field_id</td>       <td>Puts short value in vx into a static field.</td>       <td>6D00 0B00 - sput-short v0, Test3.ss1:S // field@000b<br> Puts the short value in v0 into the field@000b static field (entry #BH in the field id table).</td>      </tr>      <tr>       <td>6E</td>       <td>invoke-virtual { parameters }, methodtocall</td>       <td>Invokes a virtual method with parameters.</td>       <td>6E53 0600 0421 - invoke-virtual { v4, v0, v1, v2, v3}, Test2.method5:(IIII)V // method@0006<br> Invokes the 6th method in the method table with the following arguments: v4 is the "this" instance, v0, v1, v2, and v3 are the method parameters. The method has 5 arguments (4 MSB bits of the second byte)<sup>5</sup>.</td>      </tr>      <tr>       <td>6F</td>       <td>invoke-super {parameter},methodtocall</td>       <td>Invokes the virtual method of the immediate parent class.</td>       <td>6F10 A601 0100 invoke-super {v1},java.io.FilterOutputStream.close:()V // method@01a6<br> Invokes method@01a6 with one parameter, v1.</td>      </tr>      <tr>       <td>70</td>       <td>invoke-direct { parameters }, methodtocall</td>       <td>Invokes a method with parameters without the virtual method resolution.</td>       <td>7010 0800 0100 - invoke-direct {v1}, java.lang.Object.<init>:()V // method@0008<br> Invokes the 8th method in the method table with just one parameter, v1 is the "this" instance<sup>5</sup>.</td>      </tr>      <tr>       <td>71</td>       <td>invoke-static {parameters}, methodtocall</td>       <td>Invokes a static method with parameters.</td>       <td>7110 3400 0400 - invoke-static {v4}, java.lang.Integer.parseInt:( Ljava/lang/String;)I // method@0034<br> Invokes method@34 static method. The method is called with one parameter, v4<sup>5</sup>.</td>      </tr>      <tr>       <td>72</td>       <td>invoke-interface {parameters},methodtocall</td>       <td>Invokes an interface method.</td>       <td>7240 2102 3154 invoke-interface {v1, v3, v4, v5}, mwfw.IReceivingProtocolAdapter.receivePackage:(<br> ILjava/lang/String;Ljava/io/InputStream;)Z // method@0221<br> Invokes method@221 interface method using parameters in v1,v3,v4 and v5<sup>5</sup>.</td>      </tr>      <tr>       <td>73</td>       <td>unused_73</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>74</td>       <td>invoke-virtual/range {vx..vy},methodtocall</td>       <td>Invokes virtual method with a range of registers. The instruction specifies the first register and the number of registers to be passed to the method.</td>       <td>7403 0600 1300 - invoke-virtual {v19..v21}, Test2.method5:(IIII)V // method@0006<br> Invokes the 6th method in the method table with the following arguments: v19 is the "this" instance, v20 and v21 are the method parameters.</td>      </tr>      <tr>       <td>75</td>       <td>invoke-super/range</td>       <td>Invokes  the virtual method of the immediate parent class. The instruction specifies the first register and the number of registers to be passed to the method.</td>       <td>7501 A601 0100 invoke-super {v1},java.io.FilterOutputStream.close:()V // method@01a6<br> Invokes method@01a6 with one parameter, v1.</td>      </tr>      <tr>       <td>76</td>       <td>invoke-direct/range {vx..vy},methodtocall</td>       <td>Invokes direct method with a range of registers. The instruction specifies the first register and the number of registers to be passed to the method.</td>       <td>7603 3A00 1300 - invoke-direct/range {v19..21},java.lang.Object.<init>:()V // method@003a<br> Invokes method@3A with 1 parameters (second byte of the instruction=03). The parameter is stored in v19 (5th,6th bytes of the instruction).</td>      </tr>      <tr>       <td>77</td>       <td>invoke-static/range {vx..vy},methodtocall</td>       <td>Invokes static method with a range of registers. The instruction specifies the first register and the number of registers to be passed to the method.</td>       <td>7703 3A00 1300 - invoke-static/range {v19..21},java.lang.Integer.parseInt:( Ljava/lang/String;)I // method@0034<br> Invokes method@3A with 1 parameters (second byte of the instruction=03). The parameter is stored in v19 (5th,6th bytes of the instruction).</td>      </tr>      <tr>       <td>78</td>       <td>invoke-interface-range</td>       <td>Invokes an interface method with a range of registers. The instruction specifies the first register and the number of registers to be passed to the method.</td>       <td>7840 2102 0100 invoke-interface {v1..v4}, mwfw.IReceivingProtocolAdapter.receivePackage:(<br> ILjava/lang/String;Ljava/io/InputStream;)Z // method@0221<br> Invokes method@221 interface method using parameters in v1..v4.</td>      </tr>      <tr>       <td>79</td>       <td>unused_79</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>7A</td>       <td>unused_7A</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>7B</td>       <td>neg-int vx,vy</td>       <td>Calculates vx=-vy.</td>       <td>7B01 - neg-int v1,v0<br> Calculates -v0 and stores the result in v1.</td>      </tr>      <tr>       <td>7C</td>       <td>not-int vx,vy</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>7D</td>       <td>neg-long vx,vy</td>       <td>Calculates vx,vx+1=-(vy,vy+1)</td>       <td>7D02 - neg-long v2,v0<br> Calculates -(v0,v1) and stores the result into (v2,v3)</td>      </tr>      <tr>       <td>7E</td>       <td>not-long vx,vy</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>7F</td>       <td>neg-float vx,vy</td>       <td>Calculates vx=-vy</td>       <td>7F01 - neg-float v1,v0<br> Calculates -v0 and stores the result into v1.</td>      </tr>      <tr>       <td>80</td>       <td>neg-double vx,vy</td>       <td>Calculates vx,vx+1=-(vy,vy+1)</td>       <td>8002 - neg-double v2,v0<br> Calculates -(v0,v1) and stores the result into (v2,v3)</td>      </tr>      <tr>       <td>81</td>       <td>int-to-long vx, vy</td>       <td>Converts the integer in vy into a long in vx,vx+1.</td>       <td>8106 - int-to-long v6, v0<br> Converts an integer in v0 into a long in v6,v7.</td>      </tr>      <tr>       <td>82</td>       <td>int-to-float vx, vy</td>       <td>Converts the integer in vx into a float in vx.</td>       <td>8206 - int-to-float v6, v0<br> Converts the integer in v0 into a float in v6.</td>      </tr>      <tr>       <td>83</td>       <td>int-to-double vx, vy</td>       <td>Converts the integer in vy into the double in vx,vx+1.</td>       <td>8306 - int-to-double v6, v0<br> Converts the integer in v0 into a double in v6,v7</td>      </tr>      <tr>       <td>84</td>       <td>long-to-int vx,vy</td>       <td>Converts the long value in vy,vy+1 into an integer in vx.</td>       <td>8424 - long-to-int v4, v2<br> Converts the long value in v2,v3 into an integer value in v4.</td>      </tr>      <tr>       <td>85</td>       <td>long-to-float vx, vy</td>       <td>Converts the long value in vy,vy+1 into a float in vx.</td>       <td>8510 - long-to-float v0, v1<br> Convcerts the long value in v1,v2 into a float value in v0.</td>      </tr>      <tr>       <td>86</td>       <td>long-to-double vx, vy</td>       <td>Converts the long value in vy,vy+1 into a double value in vx,vx+1.</td>       <td>8610 - long-to-double v0, v1<br> Converts the long value in v1,v2 into a double value in v0,v1.</td>      </tr>      <tr>       <td>87</td>       <td>float-to-int vx, vy</td>       <td>Converts the float value in vy into an integer value in vx.</td>       <td>8730 - float-to-int v0, v3<br> Converts the float value in v3 into an integer value in v0.</td>      </tr>      <tr>       <td>88</td>       <td>float-to-long vx,vy</td>       <td>Converts the float value in vy into a long value in vx.</td>       <td>8830 - float-to-long v0, v3<br> Converts the float value in v3 into a long value in v0,v1.</td>      </tr>      <tr>       <td>89</td>       <td>float-to-double vx, vy</td>       <td>Converts the float value in vy into a double value in vx,vx+1.</td>       <td>8930 - float-to-double v0, v3<br> Converts the float value in v3 into a double value in v0,v1.</td>      </tr>      <tr>       <td>8A</td>       <td>double-to-int vx, vy</td>       <td>Converts the double value in vy,vy+1 into an integer value in vx.</td>       <td>8A40  - double-to-int v0, v4<br> Converts the double value in v4,v5 into an integer value in v0.</td>      </tr>      <tr>       <td>8B</td>       <td>double-to-long vx, vy</td>       <td>Converts the double value in vy,vy+1 into a long value in vx,vx+1.</td>       <td>8B40 - double-to-long v0, v4<br> Converts the double value in v4,v5 into a long value in v0,v1.</td>      </tr>      <tr>       <td>8C</td>       <td>double-to-float vx, vy</td>       <td>Converts the double value in vy,vy+1 into a float value in vx.</td>       <td>8C40 - double-to-float v0, v4<br> Converts the double value in v4,v5 into a float value in v0,v1.</td>      </tr>      <tr>       <td>8D</td>       <td>int-to-byte vx,vy</td>       <td>Converts the int value in vy to a byte value and stores it in vx.</td>       <td>8D00 - int-to-byte v0, v0<br> Converts the integer in v0 into a byte and puts the byte value into v0.</td>      </tr>      <tr>       <td>8E</td>       <td>int-to-char vx,vy</td>       <td>Converts the int value in vy to a char value and stores it in vx.</td>       <td>8E33  - int-to-char v3, v3<br> Converts the integer in v3 into a char and puts the char value into v3.</td>      </tr>      <tr>       <td>8F</td>       <td>int-to-short vx,vy</td>       <td>Converts the int value in vy to a short value and stores it in vx.</td>       <td>8F00 - int-to-short v0, v0<br> Converts the integer in v0 into a short and puts the short value into v3.</td>      </tr>      <tr>       <td>90</td>       <td>add-int vx,vy,vz</td>       <td>Calculates vy+vz and puts the result into vx.</td>       <td>9000 0203 - add-int v0, v2, v3<br> Adds v3 to v2 and puts the result into v0<sup>4</sup>.</td>      </tr>      <tr>       <td>91</td>       <td>sub-int vx,vy,vz</td>       <td>Calculates vy-vz and puts the result into vx.</td>       <td>9100 0203 - sub-int v0, v2, v3<br> Subtracts v3 from v2 and puts the result into v0.</td>      </tr>      <tr>       <td>92</td>       <td>mul-int vx, vy, vz</td>       <td>Multiplies vz with wy and puts the result int vx.</td>       <td>9200 0203 - mul-int v0,v2,v3<br> Multiplies v2 with w3 and puts the result into v0</td>      </tr>      <tr>       <td>93</td>       <td>div-int vx,vy,vz</td>       <td>Divides vy with vz and puts the result into vx.</td>       <td>9303 0001 - div-int v3, v0, v1<br> Divides v0 with v1 and puts the result into v3.</td>      </tr>      <tr>       <td>94</td>       <td>rem-int vx,vy,vz</td>       <td>Calculates vy % vz and puts the result into vx.</td>       <td>9400 0203 - rem-int v0, v2, v3<br> Calculates v3 % v2 and puts the result into v0.</td>      </tr>      <tr>       <td>95</td>       <td>and-int vx, vy, vz</td>       <td>Calculates vy AND vz and puts the result into vx.</td>       <td>9503 0001 - and-int v3, v0, v1<br> Calculates v0 AND v1 and puts the result into v3.</td>      </tr>      <tr>       <td>96</td>       <td>or-int vx, vy, vz</td>       <td>Calculates vy OR vz and puts the result into vx.</td>       <td>9603 0001 - or-int v3, v0, v1<br> Calculates v0 OR v1 and puts the result into v3.</td>      </tr>      <tr>       <td>97</td>       <td>xor-int vx, vy, vz</td>       <td>Calculates vy XOR vz and puts the result into vx.</td>       <td>9703 0001 - xor-int v3, v0, v1<br> Calculates v0 XOR v1 and puts the result into v3.</td>      </tr>      <tr>       <td>98</td>       <td>shl-int vx, vy, vz</td>       <td>Shift vy left by the positions specified by vz and store the result into vx.</td>       <td>9802 0001 - shl-int v2, v0, v1<br> Shift v0 left by the positions specified by v1 and store the result in v2.</td>      </tr>      <tr>       <td>99</td>       <td>shr-int vx, vy, vz</td>       <td>Shift vy right by the positions specified by vz and store the result into vx.</td>       <td>9902 0001 - shr-int v2, v0, v1<br> Shift v0 right by the positions specified by v1 and store the result in v2.</td>      </tr>      <tr>       <td>9A</td>       <td>ushr-int vx, vy, vz</td>       <td>Unsigned shift right (>>>) vy by the positions specified by vz and store the result into vx.</td>       <td>9A02 0001 - ushr-int v2, v0, v1<br> Unsigned shift v0 right by the positions specified by v1 and store the result in v2.</td>      </tr>      <tr>       <td>9B</td>       <td>add-long vx, vy, vz</td>       <td>Adds vy to vz and puts the result into vx<sup>1</sup>.</td>       <td>9B00 0305 - add-long v0, v3, v5<br> The long value in v3,v4 is added to the value in v5,v6 and the result is stored in v0,v1.</td>      </tr>      <tr>       <td>9C</td>       <td>sub-long vx,vy,vz</td>       <td>Calculates vy-vz and puts the result into vx<sup>1</sup>.</td>       <td>9C00 0305 - sub-long v0, v3, v5<br> Subtracts the long value in v5,v6 from the long value in v3,v4 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>9D</td>       <td>mul-long vx,vy,vz</td>       <td>Calculates vy*vz and puts the result into vx<sup>1</sup>.</td>       <td>9D00 0305 - mul-long v0, v3, v5<br> Multiplies the long value in v5,v6 with the long value in v3,v4 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>9E</td>       <td>div-long vx, vy, vz</td>       <td>Calculates vy/vz and puts the result into vx<sup>1</sup>.</td>       <td>9E06 0002 - div-long v6, v0, v2<br> Divides the long value in v0,v1 with the long value in v2,v3 and pust the result into v6,v7.</td>      </tr>      <tr>       <td>9F</td>       <td>rem-long vx,vy,vz</td>       <td>Calculates vy % vz and puts the result into vx<sup>1</sup>.</td>       <td>9F06 0002 - rem-long v6, v0, v2<br> Calculates v0,v1 %  v2,v3 and puts the result into v6,v7.</td>      </tr>      <tr>       <td>A0</td>       <td>and-long vx, vy, vz</td>       <td>Calculates the vy AND vz and puts the result into vx<sup>1</sup>.</td>       <td>A006 0002 - and-long v6, v0, v2<br> Calculates v0,v1 AND v2,v3 and puts the result into v6,v7.</td>      </tr>      <tr>       <td>A1</td>       <td>or-long vx, vy, vz</td>       <td>Calculates the vy OR vz and puts the result into vx<sup>1</sup>.</td>       <td>A106 0002 - or-long v6, v0, v2<br> Calculates v0,v1 OR v2,v3 and puts the result into v6,v7.</td>      </tr>      <tr>       <td>A2</td>       <td>xor-long vx, vy, vz</td>       <td>Calculates the vy XOR vz and puts the result into vx<sup>1</sup>.</td>       <td>A206 0002 - xor-long v6, v0, v2<br> Calculates v0,v1 XOR v2,v3 and puts the result into v6,v7.</td>      </tr>      <tr>       <td>A3</td>       <td>shl-long vx, vy, vz</td>       <td>Shifts left vy by vz positions and stores the result in vx<sup>1</sup>.</td>       <td>A302 0004 - shl-long v2, v0, v4<br> Shift v0,v1 by postions specified by v4 and puts the result into v2,v3.</td>      </tr>      <tr>       <td>A4</td>       <td>shr-long vx,vy,vz</td>       <td>Shifts right vy by vz positions and stores the result in vx<sup>1</sup>.</td>       <td>A402 0004 - shr-long v2, v0, v4<br> Shift v0,v1 by postions specified by v4 and puts the result into v2,v3.</td>      </tr>      <tr>       <td>A5</td>       <td>ushr-long vx, vy, vz</td>       <td>Unsigned shifts right vy by vz positions and stores the result in vx<sup>1</sup>.</td>       <td>A502 0004 - ushr-long v2, v0, v4<br> Unsigned shift v0,v1 by postions specified by v4 and puts the result into v2,v3.</td>      </tr>      <tr>       <td>A6</td>       <td>add-float vx,vy,vz</td>       <td>Adds vy to vz and puts the result into vx.</td>       <td>A600 0203 - add-float v0, v2, v3<br> Adds the floating point numbers in v2 and v3 and puts the result into v0.</td>      </tr>      <tr>       <td>A7</td>       <td>sub-float vx,vy,vz</td>       <td>Calculates vy-vz and puts the result into vx.</td>       <td>A700 0203 - sub-float v0, v2, v3<br> Calculates v2-v3 and puts the result into v0.</td>      </tr>      <tr>       <td>A8</td>       <td>mul-float vx, vy, vz</td>       <td>Multiplies vy with vz and puts the result into vx.</td>       <td>A803 0001 - mul-float v3, v0, v1<br> Multiplies v0 with v1 and puts the result into v3.</td>      </tr>      <tr>       <td>A9</td>       <td>div-float vx, vy, vz</td>       <td>Calculates vy/vz and puts the result into vx.</td>       <td>A903 0001 - div-float v3, v0, v1<br> Divides v0 with v1 and puts the result into v3.</td>      </tr>      <tr>       <td>AA</td>       <td>rem-float vx,vy,vz</td>       <td>Calculates vy % vz and puts the result into vx.</td>       <td>AA03 0001 - rem-float v3, v0, v1<br> Calculates v0 %  v1 and puts the result into v3.</td>      </tr>      <tr>       <td>AB</td>       <td>add-double vx,vy,vz</td>       <td>Adds vy to vz and puts the result into vx<sup>1</sup>.</td>       <td>AB00 0305 - add-double v0, v3, v5<br> Adds the double value in v5,v6 registers to the double value in v3,v4 registers and places the result  in v0,v1 registers.</td>      </tr>      <tr>       <td>AC</td>       <td>sub-double vx,vy,vz</td>       <td>Calculates vy-vz and puts the result into vx<sup>1</sup>.</td>       <td>AC00 0305 - sub-double v0, v3, v5<br> Subtracts the value in v5,v6 from the value in v3,v4 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>AD</td>       <td>mul-double vx, vy, vz</td>       <td>Multiplies vy with vz and puts the result into vx<sup>1</sup>.</td>       <td>AD06 0002 - mul-double v6, v0, v2<br> Multiplies the double value in v0,v1 with the double value in v2,v3 and puts the result into v6,v7.</td>      </tr>      <tr>       <td>AE</td>       <td>div-double vx, vy, vz</td>       <td>Calculates vy/vz and puts the result into vx<sup>1</sup>.</td>       <td>AE06 0002 - div-double v6, v0, v2<br> Divides the double value in v0,v1 with the double value in v2,v3 and puts the result into v6,v7.</td>      </tr>      <tr>       <td>AF</td>       <td>rem-double vx,vy,vz</td>       <td>Calculates vy % vz and puts the result into vx<sup>1</sup>.</td>       <td>AF06 0002 - rem-double v6, v0, v2<br> Calculates v0,v1 % v2,v3 and puts the result into v6,v7.</td>      </tr>      <tr>       <td>B0</td>       <td>add-int/2addr vx,vy</td>       <td>Adds vy to vx.</td>       <td>B010 - add-int/2addr v0,v1<br> Adds v1 to v0.</td>      </tr>      <tr>       <td>B1</td>       <td>sub-int/2addr vx,vy</td>       <td>Calculates vx-vy and puts the result into vx.</td>       <td>B140 - sub-int/2addr v0, v4<br> Subtracts v4 from v0 and puts the result into v0.</td>      </tr>      <tr>       <td>B2</td>       <td>mul-int/2addr vx,vy</td>       <td>Multiplies vx with vy.</td>       <td>B210 - mul-int/2addr v0, v1<br> Multiples v0 with v1 and puts the result into v0.</td>      </tr>      <tr>       <td>B3</td>       <td>div-int/2addr vx,vy</td>       <td>Divides vx with vy and puts the result into vx.</td>       <td>B310 - div-int/2addr v0, v1<br> Divides v0 with v1 and puts the result into v0.</td>      </tr>      <tr>       <td>B4</td>       <td>rem-int/2addr vx,vy</td>       <td>Calculates vx % vy and puts the result into vx</td>       <td>B410 - rem-int/2addr v0, v1<br> Calculates v0 % v1 and puts the result into v0.</td>      </tr>      <tr>       <td>B5</td>       <td>and-int/2addr vx, vy</td>       <td>Calculates vx AND vy and puts the result into vx.</td>       <td>B510 - and-int/2addr v0, v1<br> Calculates v0 AND v1 and puts the result into v0.</td>      </tr>      <tr>       <td>B6</td>       <td>or-int/2addr vx, vy</td>       <td>Calculates vx OR vy and puts the result into vx.</td>       <td>B610 - or-int/2addr v0, v1<br> Calculates v0 OR v1 and puts the result into v0.</td>      </tr>      <tr>       <td>B7</td>       <td>xor-int/2addr vx, vy</td>       <td>Calculates vx XOR vy and puts the result into vx.</td>       <td>B710  - xor-int/2addr v0, v1<br> Calculates v0 XOR v1 and puts the result into v0.</td>      </tr>      <tr>       <td>B8</td>       <td>shl-int/2addr vx, vy</td>       <td>Shifts vx left by vy positions.</td>       <td>B810 - shl-int/2addr v0, v1<br> Shift v0 left by v1 positions.</td>      </tr>      <tr>       <td>B9</td>       <td>shr-int/2addr vx, vy</td>       <td>Shifts vx right by vy positions.</td>       <td>B910 - shr-int/2addr v0, v1<br> Shift v0 right by v1 positions.</td>      </tr>      <tr>       <td>BA</td>       <td>ushr-int/2addr vx, vy</td>       <td>Unsigned shift right (>>>) vx by the positions specified by vy.</td>       <td>BA10 - ushr-int/2addr v0, v1<br> Unsigned shift v0 by the positions specified by v1.</td>      </tr>      <tr>       <td>BB</td>       <td>add-long/2addr vx,vy</td>       <td>Adds vy to vx<sup>1</sup>.</td>       <td>BB20 - add-long/2addr v0, v2<br> Adds the long value in v2,v3 registers to the long value in v0,v1 registers.</td>      </tr>      <tr>       <td>BC</td>       <td>sub-long/2addr vx,vy</td>       <td>Calculates vx-vy and puts the result into vx<sup>1</sup>.</td>       <td>BC70 - sub-long/2addr v0, v7<br> Subtracts the long value in v7,v8 from the long value in v0,v1 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>BD</td>       <td>mul-long/2addr vx,vy</td>       <td>Calculates vx*vy and puts the result into vx<sup>1</sup>.</td>       <td>BD70 - mul-long/2addr v0, v7<br> Multiplies the long value in v7,v8 with the long value in v0,v1 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>BE</td>       <td>div-long/2addr vx, vy</td>       <td>Calculates vx/vy and puts the result into vx<sup>1</sup>.</td>       <td>BE20 - div-long/2addr v0, v2<br> Divides the long value in v0,v1 with the long value in v2,v3 and puts the result into v0,v1</td>      </tr>      <tr>       <td>BF</td>       <td>rem-long/2addr vx,vy</td>       <td>Calculates vx % vy and puts the result into vx<sup>1</sup>.</td>       <td>BF20 - rem-long/2addr v0, v2<br> Calculates v0,v1 % v2,v3 and puts the result into v0,v1</td>      </tr>      <tr>       <td>C0</td>       <td>and-long/2addr vx, vy</td>       <td>Calculates vx AND vy and puts the result into vx<sup>1</sup>.</td>       <td>C020 - and-long/2addr v0, v2<br> Calculates v0,v1 OR v2,v3 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>C1</td>       <td>or-long/2addr vx, vy</td>       <td>Calculates vx OR vy and puts the result into vx<sup>1</sup>.</td>       <td>C120  - or-long/2addr v0, v2<br> Calculates v0,v1 OR v2,v3 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>C2</td>       <td>xor-long/2addr vx, vy</td>       <td>Calculates vx XOR vy and puts the result into vx<sup>1</sup>.</td>       <td>C220 - xor-long/2addr v0, v2<br> Calculates v0,v1 XOR v2,v3 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>C3</td>       <td>shl-long/2addr vx, vy</td>       <td>Shifts left the value in vx,vx+1 by the positions specified by vy and stores the result in vx,vx+1.</td>       <td>C320 - shl-long/2addr v0, v2<br> Shifts left v0,v1 by the positions specified by v2.</td>      </tr>      <tr>       <td>C4</td>       <td>shr-long/2addr vx, vy</td>       <td>Shifts right the value in vx,vx+1 by the positions specified by vy and stores the result in vx,vx+1.</td>       <td>C420 - shr-long/2addr v0, v2<br> Shifts right v0,v1 by the positions specified by v2.</td>      </tr>      <tr>       <td>C5</td>       <td>ushr-long/2addr vx, vy</td>       <td>Unsigned shifts right the value in vx,vx+1 by the positions specified by vy and stores the result in vx,vx+1.</td>       <td>C520 - ushr-long/2addr v0, v2<br> Unsigned shifts right v0,v1 by the positions specified by v2.</td>      </tr>      <tr>       <td>C6</td>       <td>add-float/2addr vx,vy</td>       <td>Adds vy to vx.</td>       <td>C640 - add-float/2addr v0,v4<br> Adds v4 to v0.</td>      </tr>      <tr>       <td>C7</td>       <td>sub-float/2addr vx,vy</td>       <td>Calculates vx-vy and stores the result in vx.</td>       <td>C740 - sub-float/2addr v0,v4<br> Adds v4 to v0.</td>      </tr>      <tr>       <td>C8</td>       <td>mul-float/2addr vx, vy</td>       <td>Multiplies vx with vy.</td>       <td>C810 - mul-float/2addr v0, v1<br> Multiplies v0 with v1.</td>      </tr>      <tr>       <td>C9</td>       <td>div-float/2addr vx, vy</td>       <td>Calculates vx/vy and puts the result into vx.</td>       <td>C910 - div-float/2addr v0, v1<br> Divides v0 with v1 and puts the result into v0.</td>      </tr>      <tr>       <td>CA</td>       <td>rem-float/2addr vx,vy</td>       <td>Calculates vx/vy and puts the result into vx.</td>       <td>CA10 - rem-float/2addr v0, v1<br> Calculates v0 % v1 and puts the result into v0.</td>      </tr>      <tr>       <td>CB</td>       <td>add-double/2addr vx, vy</td>       <td>Adds vy to vx<sup>1</sup>.</td>       <td>CB70 - add-double/2addr v0, v7<br> Adds v7 to v0.</td>      </tr>      <tr>       <td>CC</td>       <td>sub-double/2addr vx, vy</td>       <td>Calculates vx-vy and puts the result into vx<sup>1</sup>.</td>       <td>CC70 - sub-double/2addr v0, v7<br> Subtracts the value in v7,v8 from the value in v0,v1 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>CD</td>       <td>mul-double/2addr vx, vy</td>       <td>Multiplies vx with vy<sup>1</sup>.</td>       <td>CD20 - mul-double/2addr v0, v2<br> Multiplies the double value in v0,v1 with the double value in v2,v3 and puts the result into v0,v1.</td>      </tr>      <tr>       <td>CE</td>       <td>div-double/2addr vx, vy</td>       <td>Calculates vx/vy and puts the result into vx<sup>1</sup>.</td>       <td>CE20 - div-double/2addr v0, v2<br> Divides the double value in v0,v1 with the double value in v2,v3 and puts the value into v0,v1.</td>      </tr>      <tr>       <td>CF</td>       <td>rem-double/2addr vx,vy</td>       <td>Calculates vx % vy and puts the result into vx<sup>1</sup>.</td>       <td>CF20 - rem-double/2addr v0, v2<br> Calculates  v0,v1 %  v2,v3 and puts the value into v0,v1.</td>      </tr>      <tr>       <td>D0</td>       <td>add-int/lit16 vx,vy,lit16</td>       <td>Adds vy to lit16 and stores the result into vx.</td>       <td>D001 D204 - add-int/lit16 v1, v0, #int 1234 // #04d2<br> Adds v0 to literal 1234 and stores the result into v1.</td>      </tr>      <tr>       <td>D1</td>       <td>sub-int/lit16 vx,vy,lit16</td>       <td>Calculates vy - lit16 and stores the result into vx.</td>       <td>D101 D204 - sub-int/lit16 v1, v0, #int 1234 // #04d2<br> Calculates v0 - literal 1234 and stores the result into v1.</td>      </tr>      <tr>       <td>D2</td>       <td>mul-int/lit16 vx,vy,lit16</td>       <td>Calculates vy * lit16 and stores the result into vx.</td>       <td>D201 D204 - mul-int/lit16 v1, v0, #int 1234 // #04d2<br> Calculates v0 * literal 1234 and stores the result into v1.</td>      </tr>      <tr>       <td>D3</td>       <td>div-int/lit16 vx,vy,lit16</td>       <td>Calculates vy / lit16 and stores the result into vx.</td>       <td>D301 D204 - div-int/lit16 v1, v0, #int 1234 // #04d2<br> Calculates v0 / literal 1234 and stores the result into v1.</td>      </tr>      <tr>       <td>D4</td>       <td>rem-int/lit16 vx,vy,lit16</td>       <td>Calculates vy % lit16 and stores the result into vx.</td>       <td>D401 D204 - rem-int/lit16 v1, v0, #int 1234 // #04d2<br> Calculates v0 % literal 1234 and stores the result into v1.</td>      </tr>      <tr>       <td>D5</td>       <td>and-int/lit16 vx,vy,lit16</td>       <td>Calculates vy AND lit16 and stores the result into vx.</td>       <td>D501 D204 - and-int/lit16 v1, v0, #int 1234 // #04d2<br> Calculates v0 AND literal 1234 and stores the result into v1.</td>      </tr>      <tr>       <td>D6</td>       <td>or-int/lit16 vx,vy,lit16</td>       <td>Calculates vy OR lit16 and stores the result into vx.</td>       <td>D601 D204 - or-int/lit16 v1, v0, #int 1234 // #04d2<br> Calculates v0 OR literal 1234 and stores the result into v1.</td>      </tr>      <tr>       <td>D7</td>       <td>xor-int/lit16 vx,vy,lit16</td>       <td>Calculates vy XOR lit16 and stores the result into vx.</td>       <td>D701 D204 - xor-int/lit16 v1, v0, #int 1234 // #04d2<br> Calculates v0 XOR literal 1234 and stores the result into v1.</td>      </tr>      <tr>       <td>D8</td>       <td>add-int/lit8 vx,vy,lit8</td>       <td>Adds vy to lit8 and stores the result into vx.</td>       <td>D800 0201 - add-int/lit8 v0,v2, #int1<br> Adds literal 1 to v2 and stores the result into v0.</td>      </tr>      <tr>       <td>D9</td>       <td>sub-int/lit8 vx,vy,lit8</td>       <td>Calculates vy-lit8 and stores the result into vx.</td>       <td>D900 0201 - sub-int/lit8 v0,v2, #int1<br> Calculates v2-1 and stores the result into v0.</td>      </tr>      <tr>       <td>DA</td>       <td>mul-int/lit-8 vx,vy,lit8</td>       <td>Multiplies vy with lit8 8-bit literal constant and puts the result into vx.</td>       <td>DA00 0002 - mul-int/lit8 v0,v0, #int2<br> Multiplies v0 with literal 2 and puts the result into v0.</td>      </tr>      <tr>       <td>DB</td>       <td>div-int/lit8 vx,vy,lit8</td>       <td>Calculates vy/lit8 and stores the result into vx.</td>       <td>DB00 0203 - mul-int/lit8 v0,v2, #int3<br> Calculates v2/3 and stores the result into v0.</td>      </tr>      <tr>       <td>DC</td>       <td>rem-int/lit8 vx,vy,lit8</td>       <td>Calculates vy % lit8 and stores the result into vx.</td>       <td>DC00 0203 - rem-int/lit8 v0,v2, #int3<br> Calculates v2 % 3 and stores the result into v0.</td>      </tr>      <tr>       <td>DD</td>       <td>and-int/lit8 vx,vy,lit8</td>       <td>Calculates vy AND lit8 and stores the result into vx.</td>       <td>DD00 0203 - and-int/lit8 v0,v2, #int3<br> Calculates v2 AND 3 and stores the result into v0.</td>      </tr>      <tr>       <td>DE</td>       <td>or-int/lit8 vx, vy, lit8</td>       <td>Calculates vy OR lit8 and puts the result into vx.</td>       <td>DE00 0203 - or-int/lit8 v0, v2, #int 3<br> Calculates v2 OR literal 3 and puts the result into v0.</td>      </tr>      <tr>       <td>DF</td>       <td>xor-int/lit8 vx, vy, lit8</td>       <td>Calculates vy XOR lit8 and puts the result into vx.</td>       <td>DF00 0203     |  0008: xor-int/lit8 v0, v2, #int 3<br> Calculates v2 XOR literal 3 and puts the result into v0.</td>      </tr>      <tr>       <td>E0</td>       <td>shl-int/lit8 vx, vy, lit8</td>       <td>Shift v0 left by the bit positions specified by the literal constant and put the result into vx.</td>       <td>E001 0001 - shl-int/lit8 v1, v0, #int 1<br> Shift v0 left by 1 position and put the result into v1.</td>      </tr>      <tr>       <td>E1</td>       <td>shr-int/lit8 vx, vy, lit8</td>       <td>Shift v0 right by the bit positions specified by the literal constant and put the result into vx.</td>       <td>E101 0001 - shr-int/lit8 v1, v0, #int 1<br> Shift v0 right by 1 position and put the result into v1.</td>      </tr>      <tr>       <td>E2</td>       <td>ushr-int/lit8 vx, vy, lit8</td>       <td>Unsigned right shift of v0 (>>>) by the bit positions specified by the literal constant and put the result into vx.</td>       <td>E201 0001 - ushr-int/lit8 v1, v0, #int 1<br> Unsigned shift v0 right by 1 position and put the result into v1.</td>      </tr>      <tr>       <td>E3</td>       <td>unused_E3</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>E4</td>       <td>unused_E4</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>E5</td>       <td>unused_E5</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>E6</td>       <td>unused_E6</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>E7</td>       <td>unused_E7</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>E8</td>       <td>unused_E8</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>E9</td>       <td>unused_E9</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>EA</td>       <td>unused_EA</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>EB</td>       <td>unused_EB</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>EC</td>       <td>unused_EC</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>ED</td>       <td>unused_ED</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>EE</td>       <td>execute-inline {parameters},inline ID</td>       <td>Executes the inline method identified by inline ID<sup>6</sup>.</td>       <td>EE20 0300 0100 - execute-inline {v1, v0}, inline #0003<br> Executes inline method #3 using v1 as "this" and passing one parameter in v0.</td>      </tr>      <tr>       <td>EF</td>       <td>unused_EF</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>F0</td>       <td>invoke-direct-empty</td>       <td>Stands as a placeholder for pruned empty methods like Object.<init>. This acts as nop during normal execution<sup>6</sup>.</td>       <td>F010 F608 0000 - invoke-direct-empty {v0}, Ljava/lang/Object;.<init>:()V // method@08f6<br> Replacement for the empty method java/lang/Object;<init>.</td>      </tr>      <tr>       <td>F1</td>       <td>unused_F1</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>F2</td>       <td>iget-quick vx,vy,offset</td>       <td>Gets the value stored at offset in vy instance's data area to vx<sup>6</sup>.</td>       <td>F221 1000 - iget-quick v1, v2, [obj+0010]<br> Gets the value at offset 0CH of the instance pointed by v2 and stores the object reference in v1.</td>      </tr>      <tr>       <td>F3</td>       <td>iget-wide-quick vx,vy,offset</td>       <td>Gets the object reference value stored at offset in vy instance's data area to vx,vx+1<sup>6</sup>.</td>       <td>F364 3001 - iget-wide-quick v4, v6, [obj+0130]<br> Gets the value at offset 130H of the instance pointed by v6 and stores the object reference in v4,v5.</td>      </tr>      <tr>       <td>F4</td>       <td>iget-object-quick vx,vy,offset</td>       <td>Gets the object reference value stored at offset in vy instance's data area to vx<sup>6</sup>.</td>       <td>F431 0C00 - iget-object-quick v1, v3, [obj+000c]<br> Gets the object reference value at offset 0CH of the instance pointed by v3 and stores the object reference in v1.</td>      </tr>      <tr>       <td>F5</td>       <td>iput-quick vx,vy,offset</td>       <td>Puts the value stored in vx to offset in vy instance's data area<sup>6</sup>.</td>       <td>F521 1000  - iput-quick v1, v2, [obj+0010]<br> Puts the object reference value in v1 to offset 10H of the instance pointed by v2.</td>      </tr>      <tr>       <td>F6</td>       <td>iput-wide-quick vx,vy,offset</td>       <td>Puts the value stored in vx,vx+1 to offset in vy instance's data area<sup>6</sup>.</td>       <td>F652 7001 - iput-wide-quick v2, v5, [obj+0170]<br> Puts the value in v2,v3 to offset 170H of the instance pointed by v5.</td>      </tr>      <tr>       <td>F7</td>       <td>iput-object-quick vx,vy,offset</td>       <td>Puts the object reference value stored in vx to offset in vy instance's data area to vx<sup>6</sup>.</td>       <td>F701 4C00 - iput-object-quick v1, v0, [obj+004c]<br> Puts the object reference value in v1 to offset 0CH of the instance pointed by v3.</td>      </tr>      <tr>       <td>F8</td>       <td>invoke-virtual-quick {parameters},vtable offset</td>       <td>Invokes a virtual method using the vtable of the target object<sup>6</sup>.</td>       <td>F820 B800 CF00 - invoke-virtual-quick {v15, v12}, vtable #00b8<br> Invokes a virtual method. The target object instance is pointed by v15 and vtable entry #B8 points to the method to be called. v12 is a parameter to the method call.</td>      </tr>      <tr>       <td>F9</td>       <td>invoke-virtual-quick/range {parameter range},vtable offset</td>       <td>Invokes a virtual method using the vtable of the target object<sup>6</sup></td>       <td>F906 1800 0000 - invoke-virtual-quick/range {v0..v5},vtable #0018<br> Invokes a method using the vtable of the instance pointed by v0. v1..v5 registers are parameters to the method call.</td>      </tr>      <tr>       <td>FA</td>       <td>invoke-super-quick {parameters},vtable offset</td>       <td>Invokes a virtual method in the target object's immediate parent class using the vtable of that parent class<sup>6</sup>.</td>       <td>FA40 8100 3254  - invoke-super-quick {v2, v3, v4, v5}, vtable #0081<br> Invokes a method using the vtable of the immediate parent class of instance pointed by v2. v3, v4 and v5 registers are parameters to the method call.</td>      </tr>      <tr>       <td>FB</td>       <td>invoke-super-quick/range {register range},vtable offset</td>       <td>Invokes a virtual method in the target object's immediate parent class using the vtable of that parent class<sup>6</sup>.</td>       <td>F906 1B00 0000 - invoke-super-quick/range {v0..v5}, vtable #001b<br> Invokes a method using the vtable of the immediate parent class of instance pointed by v0. v1..v5 registers are parameters to the method call.</td>      </tr>      <tr>       <td>FC</td>       <td>unused_FC</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>FD</td>       <td>unused_FD</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>FE</td>       <td>unused_FE</td>       <td> </td>       <td> </td>      </tr>      <tr>       <td>FF</td>       <td>unused_FF</td>       <td> </td>       <td> </td>      </tr>     </tbody>    </table>    <ol>     <li>请注意,double和long值占用两个寄存器(如价值的由VY解决的是在VY和VY +1寄存器位于)</li>     <li>偏移量可以是积极或消极的,它的起始字节的指令的偏移量计算。偏移量总是被解释字(2个字节每1偏移值递增/递减)。2的补码格式存储在负偏移。当前位置偏移的起始字节的指令。</li>     <li>比较操作如果第一个操作数是比第二个操作数,0 returrn正值,如果第一个操作数小于第二个操作数,如果他们是平等的和负面的价值。</li>     <li>没有在野外看到,插Dalvik字节码列表。</li>     <li>调用的参数列表编码是有些奇怪。启动参数数目> 4和参数数目%4 == 1,第五届(9等)参数最低4位,紧随指令字节编码。奇怪的是,这种编码在1个参数的情况下不使用,在这种情况下,一个完整的16位字后加入其中只有4位,而最低的4位字节指令用于编码的单参数的方法指数字节被闲置。</li>     <li>这是一个不安全的指令,只发生在ODEX文件。</li>    </ol>    <p> </p>    <p>via: http://my.oschina.net/xiahuawuyu/blog/57146?fromerr=vYc0IXZZ</p>    <p> </p>