Douglas Leung | 200f040 | 2016-02-25 20:05:47 -0800 | [diff] [blame] | 1 | %default { "store":"sw" } |
| 2 | /* For: iput-quick, iput-object-quick */ |
Alexey Frunze | 84603bf | 2016-10-21 19:54:43 -0700 | [diff] [blame] | 3 | /* op vA, vB, offset@CCCC */ |
Douglas Leung | 200f040 | 2016-02-25 20:05:47 -0800 | [diff] [blame] | 4 | GET_OPB(a2) # a2 <- B |
| 5 | GET_VREG(a3, a2) # a3 <- fp[B], the object pointer |
| 6 | FETCH(a1, 1) # a1 <- field byte offset |
| 7 | GET_OPA4(a2) # a2 <- A(+) |
| 8 | beqz a3, common_errNullObject # object was null |
| 9 | GET_VREG(a0, a2) # a0 <- fp[A] |
| 10 | FETCH_ADVANCE_INST(2) # advance rPC, load rINST |
| 11 | addu t0, a3, a1 |
Alexey Frunze | 84603bf | 2016-10-21 19:54:43 -0700 | [diff] [blame] | 12 | GET_INST_OPCODE(t1) # extract opcode from rINST |
| 13 | GET_OPCODE_TARGET(t1) |
Douglas Leung | 200f040 | 2016-02-25 20:05:47 -0800 | [diff] [blame] | 14 | $store a0, 0(t0) # obj.field (8/16/32 bits) <- a0 |
Alexey Frunze | 84603bf | 2016-10-21 19:54:43 -0700 | [diff] [blame] | 15 | JR(t1) # jump to next instruction |