diff options
Diffstat (limited to 'vm/mterp/mips/OP_MOVE_WIDE_FROM16.S')
-rw-r--r-- | vm/mterp/mips/OP_MOVE_WIDE_FROM16.S | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/vm/mterp/mips/OP_MOVE_WIDE_FROM16.S b/vm/mterp/mips/OP_MOVE_WIDE_FROM16.S new file mode 100644 index 000000000..44251f451 --- /dev/null +++ b/vm/mterp/mips/OP_MOVE_WIDE_FROM16.S @@ -0,0 +1,13 @@ +%verify "executed" + /* move-wide/from16 vAA, vBBBB */ + /* NOTE: regs can overlap, e.g. "move v6, v7" or "move v7, v6" */ + FETCH(a3, 1) # a3 <- BBBB + GET_OPA(a2) # a2 <- AA + EAS2(a3, rFP, a3) # a3 <- &fp[BBBB] + EAS2(a2, rFP, a2) # a2 <- &fp[AA] + LOAD64(a0, a1, a3) # a0/a1 <- fp[BBBB] + FETCH_ADVANCE_INST(2) # advance rPC, load rINST + GET_INST_OPCODE(t0) # extract opcode from rINST + STORE64(a0, a1, a2) # fp[AA] <- a0/a1 + GOTO_OPCODE(t0) # jump to next instruction + |