diff options
author | Dan Bornstein <danfuzz@android.com> | 2010-10-20 17:32:39 -0700 |
---|---|---|
committer | Dan Bornstein <danfuzz@android.com> | 2010-10-21 13:01:19 -0700 |
commit | 7f01b33ca264fef60de72fd00258dc95604286de (patch) | |
tree | 4c2db412529aebed9d219d8a22d3abf0f4b37635 /docs | |
parent | bab85777f09b375f5301f5dbb4884b3c8f215b59 (diff) | |
download | dalvik-7f01b33ca264fef60de72fd00258dc95604286de.tar.gz |
One more format and our first set of wide opcodes.
Change-Id: I16731c1b66b40022c2e10c93640583ae43659701
Diffstat (limited to 'docs')
-rw-r--r-- | docs/dalvik-bytecode.html | 152 | ||||
-rw-r--r-- | docs/instruction-formats.html | 8 |
2 files changed, 157 insertions, 3 deletions
diff --git a/docs/dalvik-bytecode.html b/docs/dalvik-bytecode.html index 35fa64b0a..6fb3d99fc 100644 --- a/docs/dalvik-bytecode.html +++ b/docs/dalvik-bytecode.html @@ -706,7 +706,7 @@ 72: invoke-interface </td> <td><code>B:</code> argument word count (4 bits)<br/> - <code>C:</code> method index (16 bits)<br/> + <code>C:</code> method reference index (16 bits)<br/> <code>D..G, A:</code> argument registers (4 bits each)</td> <td>Call the indicated method. The result (if any) may be stored with an appropriate <code>move-result*</code> variant as the immediately @@ -749,7 +749,7 @@ 78: invoke-interface/range </td> <td><code>A:</code> argument word count (8 bits)<br/> - <code>B:</code> method index (16 bits)<br/> + <code>B:</code> method reference index (16 bits)<br/> <code>C:</code> first argument register (16 bits)<br/> <code>N = A + C - 1</code></td> <td>Call the indicated method. See first <code>invoke-<i>kind</i></code> @@ -927,11 +927,157 @@ </td> </tr> <tr> - <td>e3..ff 10x</td> + <td>e3..fe 10x</td> <td><i>(unused)</i></td> <td> </td> <td><i>(unused)</i></td> </tr> +<tr> + <td>ff -</td> + <td><i>(expanded opcode)</i></td> + <td> </td> + <td>An <code>ff</code> in the primary opcode position indicates that there + is a secondary opcode in the high-order byte of the opcode code unit, + as opposed to an argument value. These expanded opcodes are detailed + immediately below. + </td> +</tr> +<tr> + <td>00ff 41c</td> + <td>check-cast/jumbo vBBBB, type@AAAAAAAA</td> + <td><code>A:</code> type index (32 bits)<br/> + <code>B:</code> reference-bearing register (16 bits) + </td> + <td>Throw a <code>ClassCastException</code> if the reference in the + given register cannot be cast to the indicated type. See + <code>check-cast</code> description above for details, + caveats, and suggestions. + </td> +</tr> +<tr> + <td>01ff 52c</td> + <td>instance-of/jumbo vBBBB, vCCCC, type@AAAAAAAA</td> + <td><code>A:</code> type index (32 bits)<br/> + <code>B:</code> destination register (16 bits)<br/> + <code>C:</code> reference-bearing register (16 bits) + </td> + <td>Store in the given destination register <code>1</code> + if the indicated reference is an instance of the given type, + or <code>0</code> if not. See + <code>instance-of</code> description above for details, + caveats, and suggestions. + </td> +</tr> +<tr> + <td>02ff 41c</td> + <td>new-instance/jumbo vBBBB, type@AAAAAAAA</td> + <td><code>A:</code> type index (32 bits)<br/> + <code>B:</code> destination register (16 bits) + </td> + <td>Construct a new instance of the indicated type. See + <code>new-instance</code> description above for details, + caveats, and suggestions. + </td> +</tr> +<tr> + <td>03ff 52c</td> + <td>new-array/jumbo vBBBB, vCCCC, type@AAAAAAAA</td> + <td><code>A:</code> type index (32 bits)<br/> + <code>B:</code> destination register (16 bits)<br/> + <code>C:</code> size register (16 bits) + </td> + <td>Construct a new array of the indicated type and size. See + <code>new-array</code> description above for details, + caveats, and suggestions. + </td> +</tr> +<tr> + <td>04ff 5rc</td> + <td>filled-new-array/jumbo {vCCCC .. vNNNN}, type@AAAAAAAA</td> + <td><code>A:</code> type index (32 bits)<br/> + <code>B:</code> array size and argument word count (16 bits)<br/> + <code>C:</code> first argument register (16 bits)<br/> + <code>N = B + C - 1</code> + </td> + <td>Construct an array of the given type and size, filling it with the + supplied contents. See first + <code>filled-new-array</code> description above for details, + caveats, and suggestions. + </td> +</tr> +<tr> + <td>05ff..12ff 52c</td> + <td>i<i>instanceop</i> vBBBB, vCCCC, field@AAAAAAAA<br/> + 05ff: iget/jumbo<br/> + 06ff: iget-wide/jumbo<br/> + 07ff: iget-object/jumbo<br/> + 08ff: iget-boolean/jumbo<br/> + 09ff: iget-byte/jumbo<br/> + 0aff: iget-char/jumbo<br/> + 0bff: iget-short/jumbo<br/> + 0cff: iput/jumbo<br/> + 0dff: iput-wide/jumbo<br/> + 0eff: iput-object/jumbo<br/> + 0fff: iput-boolean/jumbo<br/> + 10ff: iput-byte/jumbo<br/> + 11ff: iput-char/jumbo<br/> + 12ff: iput-short/jumbo + </td> + <td><code>A:</code> instance field reference index (32 bits)<br/> + <code>B:</code> value register or pair; may be source or dest + (16 bits)<br/> + <code>C:</code> object register (16 bits) + </td> + <td>Perform the identified object instance field operation. See + <code>i<i>instanceop</i></code> description above for details, + caveats, and suggestions. + </td> +</tr> +<tr> + <td>13ff..20ff 41c</td> + <td>s<i>staticop</i> vBBBB, field@AAAAAAAA<br/> + 13ff: sget/jumbo<br/> + 14ff: sget-wide/jumbo<br/> + 15ff: sget-object/jumbo<br/> + 16ff: sget-boolean/jumbo<br/> + 17ff: sget-byte/jumbo<br/> + 18ff: sget-char/jumbo<br/> + 19ff: sget-short/jumbo<br/> + 1aff: sput/jumbo<br/> + 1bff: sput-wide/jumbo<br/> + 1cff: sput-object/jumbo<br/> + 1dff: sput-boolean/jumbo<br/> + 1eff: sput-byte/jumbo<br/> + 1fff: sput-char/jumbo<br/> + 20ff: sput-short/jumbo + </td> + <td><code>A:</code> instance field reference index (32 bits)<br/> + <code>B:</code> value register or pair; may be source or dest + (16 bits) + </td> + <td>Perform the identified object static field operation. See + <code>s<i>staticop</i></code> description above for details, + caveats, and suggestions. + </td> +</tr> +<tr> + <td>21ff..25ff 5rc</td> + <td>invoke-<i>kind</i>/jumbo {vCCCC .. vNNNN}, meth@AAAAAAAA<br/> + 21ff: invoke-virtual/jumbo<br/> + 22ff: invoke-super/jumbo<br/> + 23ff: invoke-direct/jumbo<br/> + 24ff: invoke-static/jumbo<br/> + 25ff: invoke-interface/jumbo + </td> + <td><code>A:</code> method reference index (32 bits)<br/> + <code>B:</code> argument word count (16 bits)<br/> + <code>C:</code> first argument register (16 bits)<br/> + <code>N = B + C - 1</code> + </td> + <td>Call the indicated method. See first <code>invoke-<i>kind</i></code> + description above for details, caveats, and suggestions. + </td> +</tr> </tbody> </table> diff --git a/docs/instruction-formats.html b/docs/instruction-formats.html index af98dde76..0a58c98fa 100644 --- a/docs/instruction-formats.html +++ b/docs/instruction-formats.html @@ -405,6 +405,14 @@ the correspondence.</p> <td> </td> </tr> <tr> + <td><i>exop</i> AAAA<sub>lo</sub> AAAA<sub>hi</sub> BBBB + <td>41c</td> + <td><i><code>exop</code></i> vBBBB, field@AAAAAAAA<br/> + <i><code>exop</code></i> vBBBB, type@AAAAAAAA + </td> + <td> </td> +</tr> +<tr> <td rowspan="2"><i>exop</i> AAAA<sub>lo</sub> AAAA<sub>hi</sub> BBBB CCCC</td> <td>52c</td> |