1%default { "is_object":"0", "helper":"artGet32InstanceFromCode"}
2    /*
3     * General instance field get.
4     *
5     * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short
6     */
7    .extern $helper
8    EXPORT_PC
9    lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
10    srl      a1, rINST, 12              # a1 <- B
11    GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
12    ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
13    move     a3, rSELF                  # a3 <- self
14    jal      $helper
15    ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
16    ext      a2, rINST, 8, 4            # a2 <- A
17    PREFETCH_INST 2
18    bnez     a3, MterpPossibleException # bail out
19    .if $is_object
20    SET_VREG_OBJECT v0, a2              # fp[A] <- v0
21    .else
22    SET_VREG v0, a2                     # fp[A] <- v0
23    .endif
24    ADVANCE 2
25    GET_INST_OPCODE v0                  # extract opcode from rINST
26    GOTO_OPCODE v0                      # jump to next instruction
27