1    /*
2     * Array object get.  vAA <- vBB[vCC].
3     *
4     * for: aget-object
5     */
6    /* op vAA, vBB, vCC */
7    .extern artAGetObjectFromMterp
8    lbu     a2, 2(rPC)                  # a2 <- BB
9    lbu     a3, 3(rPC)                  # a3 <- CC
10    EXPORT_PC
11    GET_VREG_U a0, a2                   # a0 <- vBB (array object)
12    GET_VREG a1, a3                     # a1 <- vCC (requested index)
13    jal     artAGetObjectFromMterp      # (array, index)
14    ld      a1, THREAD_EXCEPTION_OFFSET(rSELF)
15    srl     a4, rINST, 8                # a4 <- AA
16    PREFETCH_INST 2
17    bnez    a1, MterpException
18    SET_VREG_OBJECT v0, a4              # vAA <- v0
19    ADVANCE 2
20    GET_INST_OPCODE v0                  # extract opcode from rINST
21    GOTO_OPCODE v0                      # jump to next instruction
22