# sput<kind>

## Purpose

Perform the identified object static field operation with the identified static 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
--- | --- | ---
67..6d 21c | sstaticop vAA, field@BBBB 67: sput 68: sput-wide 69: sput-object 6a: sput-boolean 6b: sput-byte 6c: sput-char 6d: sput-short | `A:` source value register or pair; (8 bits) `B:` static field reference index (16 bits)

## Constraints

- A must be a valid register index in the current stackframe.
- For the -wide variant, also A+1 must be a valid register index in the current stackframe.
- B must be a valid index into the field reference pool.
- The field must be static. 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, <class>.<field>'=vA.
- For the -wide variant, the registers vA and v(A+1) are moved into the field as follows:
  - <class>.<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.