iget<kind>
Purpose
Perform the identified object instance field operation with the identified
field, loading or storing into the value register.
Note: These opcodes are reasonable candidates for static linking, altering the
field argument to be a more direct offset.
Details
Op & Format |
Mnemonic / Syntax |
Arguments |
59..5f 22c |
iinstanceop vA, vB, field@CCCC
59: iput
5a: iput-wide
5b: iput-object
5c: iput-boolean
5d: iput-byte
5e: iput-char
5f: iput-short
|
A: source value register or pair; (4 bits)
B: object register (4 bits)
C: instance field reference index (16 bits) |
Constraints
-
A and B must be valid register indices in the current stack frame.
-
For the -wide variant, also A+1 must be a valid register index in the
current stack frame.
-
Register vB must contain an object reference.
-
C must be a valid index into the field reference pool.
-
The field must be an instance field. The type of the field denoted by C must
match the variant of the instruction.
-
For the -object variant, the instance referenced by register vA must be
assignment-compatible to the type of the field.
Behavior
-
For all but the -wide variant, the value of register vA is move into the
field, that is, <object>.<field>'=vA.
-
For the -wide variant, the registers vA and v(A+1) are moved into the
field as follows:
-
<object>.<field>' = vA << 0x20 | v(A+1)
Exceptions
-
NullPointerException if vB=null.
-
IllegalAccessException if <object>.<field> is not visible from
the current context according to the usual visibility and access rules of
the Java programming language, or final.