# 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.