blob: 6e8836f3be0a92a18497135855fae522736b06f6 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>aget&lt;kind&gt;</title>
<link rel=stylesheet href="opcode.css">
</head>
<body>
<h1>aget&lt;kind&gt;</h1>
<h2>Purpose</h2>
<p>
Perform the identified array operation at the identified index of the given
array, storing into the value register.
</p>
<h2>Details</h2>
<table class="instruc">
<thead>
<tr>
<th>Op &amp; Format</th>
<th>Mnemonic / Syntax</th>
<th>Arguments</th>
</tr>
</thead>
<tbody>
<tr>
<td>44..51 23x</td>
<td><i>arrayop</i> vAA, vBB, vCC<br/>
44: aget<br/>
45: aget-wide<br/>
46: aget-object<br/>
47: aget-boolean<br/>
48: aget-byte<br/>
49: aget-char<br/>
4a: aget-short<br/>
</td>
<td><code>A:</code> dest value register or pair; (8 bits)<br/>
<code>B:</code> array register (8 bits)<br/>
<code>C:</code> index register (8 bits)</td>
</tr>
</tbody>
</table>
<h2>Constraints</h2>
<ul>
<li>
A, B and C must be valid register indices in the current stackframe.
</li>
<li>
For the aget-wide variant, also A+1 must be a valid register index in the
current stackframe.
</li>
<li>
Register vB must contain an array reference. The component type of the
array must match the variant of the instruction.
</li>
<li>
Register vC must contain an integer value.
</li>
</ul>
<h2>Behavior</h2>
<ul>
<li>
For all but the -wide variant, the array element at the given index is moved
into register vA, that is, vA'=array[index].
</li>
<li>
For the -wide variant, the array element at the given index is moved into
registers vA and v(A+1) as follows:
<ul>
<li>
vA'=array[index] >> 0x20
</li>
<li>
v(A+1)'=array[index] & 0xffffffff;
</li>
</ul>
</li>
<li>
If v(A-1) is the lower half of a register pair, v(A-1)' becomes undefined.
</li>
<li>
For all but the -wide variant, if v(A+1) is the upper half of a register
pair, v(A+1)' becomes undefined.
</li>
<li>
For the -wide variant, if v(A+2) is the upper half of a register pair,
v(A+2)' becomes undefined.
</li>
</ul>
<h2>Exceptions</h2>
<ul>
<li>
NullPointerException if vB=null.
</li>
<li>
ArrayIndexOutOfBoundsException if vC < 0 or vC >= array.length.
</li>
</ul>
</body>
</html>