/dalvik/vm/mterp/x86/ |
OP_SHR_LONG.S | 12 /* Need to spill rIBASE */ 16 SPILL(rIBASE) 17 GET_VREG_WORD rIBASE %eax 1 # rIBASE<- v[BB+1] 20 shrdl rIBASE,%eax 21 sarl %cl,rIBASE 24 movl rIBASE,%eax 25 sarl $$31,rIBASE 27 SET_VREG_WORD rIBASE rINST 1 # v[AA+1]<- rIBASE [all...] |
OP_CONST_WIDE_16.S | 4 SPILL(rIBASE) # preserve rIBASE (cltd trashes it) 5 cltd # rIBASE:eax<- ssssssssssssBBBB 6 SET_VREG_WORD rIBASE rINST 1 # store msw 8 UNSPILL(rIBASE) # restore rIBASE
|
OP_CONST_WIDE_32.S | 4 SPILL(rIBASE) # save rIBASE (cltd trashes it) 5 cltd # rIBASE:eax<- ssssssssssssBBBB 6 SET_VREG_WORD rIBASE rINST,1 # store msw 8 UNSPILL(rIBASE) # restore rIBASE
|
binopWide.S | 8 SPILL(rIBASE) # save rIBASE 9 GET_VREG_WORD rIBASE %eax 0 # rIBASE<- v[BB+0] 11 $instr1 # ex: addl (rFP,%ecx,4),rIBASE 13 SET_VREG_WORD rIBASE rINST 0 # v[AA+0] <- rIBASE 15 UNSPILL(rIBASE) # restore rIBASE
|
OP_USHR_LONG.S | 12 /* Need to spill rIBASE */ 16 SPILL(rIBASE) 17 GET_VREG_WORD rIBASE %eax 1 # rIBASE<- v[BB+1] 20 shrdl rIBASE,%eax 21 shrl %cl,rIBASE 24 movl rIBASE,%eax 25 xorl rIBASE,rIBASE 27 SET_VREG_WORD rIBASE rINST 1 # v[AA+1]<- rIBAS [all...] |
OP_USHR_LONG_2ADDR.S | 8 /* Need to spill rIBASE */ 14 SPILL(rIBASE) 15 GET_VREG_WORD rIBASE rINST 1 # rIBASE<- v[AA+1] 17 shrdl rIBASE,%eax 18 shrl %cl,rIBASE 21 movl rIBASE,%eax 22 xorl rIBASE,rIBASE 24 SET_VREG_WORD rIBASE rINST 1 # v[AA+1]<- rIBAS [all...] |
OP_SHR_LONG_2ADDR.S | 8 /* Need to spill rIBASE */ 14 SPILL(rIBASE) 15 GET_VREG_WORD rIBASE rINST 1 # rIBASE<- v[AA+1] 17 shrdl rIBASE,%eax 18 sarl %cl,rIBASE 21 movl rIBASE,%eax 22 sarl $$31,rIBASE 24 SET_VREG_WORD rIBASE rINST 1 # v[AA+1]<- rIBASE [all...] |
OP_DIV_LONG.S | 6 SPILL(rIBASE) # save rIBASE/%edx 7 GET_VREG_WORD rIBASE %eax 0 9 movl rIBASE,OUT_ARG2(%esp) 15 GET_VREG_WORD rIBASE %ecx 0 19 movl rIBASE,OUT_ARG0(%esp) 23 SET_VREG_WORD rIBASE rINST 1 24 UNSPILL(rIBASE) # restore rIBASE/%edx 31 testl rIBASE,rIBAS [all...] |
OP_DIV_LONG_2ADDR.S | 7 SPILL(rIBASE) # save rIBASE/%edx 8 GET_VREG_WORD rIBASE %eax 0 10 movl rIBASE,OUT_ARG2(%esp) 16 GET_VREG_WORD rIBASE rINST 0 20 movl rIBASE,OUT_ARG0(%esp) 24 SET_VREG_WORD rIBASE rINST 1 25 UNSPILL(rIBASE) # restore rIBASE/%edx 32 testl rIBASE,rIBAS [all...] |
OP_SHL_LONG_2ADDR.S | 8 /* Need to spill rIBASE */ 14 SPILL(rIBASE) 15 GET_VREG_WORD rIBASE rINST 1 # rIBASE<- v[AA+1] 17 shldl %eax,rIBASE 21 movl %eax,rIBASE 24 SET_VREG_WORD rIBASE rINST 1 # v[AA+1]<- rIBASE 25 UNSPILL(rIBASE)
|
OP_SHL_LONG.S | 16 SPILL(rIBASE) 17 GET_VREG_WORD rIBASE %eax 1 # ecx<- v[BB+1] 20 shldl %eax,rIBASE 24 movl %eax,rIBASE 27 SET_VREG_WORD rIBASE rINST 1 # v[AA+1]<- rIBASE 29 UNSPILL(rIBASE)
|
OP_INT_TO_LONG.S | 7 SPILL(rIBASE) # cltd trashes rIBASE/edx 9 SET_VREG_WORD rIBASE rINST 1 # v[A+1]<- rIBASE/rPC 11 UNSPILL(rIBASE)
|
OP_MUL_INT.S | 9 SPILL(rIBASE) 10 imull (rFP,%ecx,4),%eax # trashes rIBASE/edx 11 UNSPILL(rIBASE)
|
OP_MUL_INT_2ADDR.S | 7 SPILL(rIBASE) 8 imull (rFP,%ecx,4),%eax # trashes rIBASE/edx 9 UNSPILL(rIBASE)
|
OP_MUL_INT_LIT8.S | 6 SPILL(rIBASE) 7 imull %ecx,%eax # trashes rIBASE/edx 8 UNSPILL(rIBASE)
|
OP_BREAKPOINT.S | 11 SPILL(rIBASE) 14 UNSPILL(rIBASE)
|
OP_CMP_LONG.S | 9 // TUNING: rework to avoid rIBASE spill 12 SPILL(rIBASE) 13 movzbl 3(rPC),rIBASE # rIBASE- CC 16 cmpl 4(rFP,rIBASE,4),%eax 19 sub (rFP,rIBASE,4),%ecx 24 UNSPILL(rIBASE) 32 UNSPILL(rIBASE) 40 UNSPILL(rIBASE)
|
OP_IGET.S | 14 SPILL(rIBASE) # preserve rIBASE 15 movzwl 2(rPC),rIBASE # rIBASE<- 0000CCCC 22 movl (%eax,rIBASE,4),%eax # resolved entry 25 movl rIBASE,OUT_ARG1(%esp) # needed by dvmResolveInstField 26 movl rSELF,rIBASE 28 movl offThread_method(rIBASE),rIBASE # rIBASE<- current metho [all...] |
OP_IGET_WIDE.S | 12 SPILL(rIBASE) # preserve rIBASE 13 movzwl 2(rPC),rIBASE # rIBASE<- 0000CCCC 20 movl (%eax,rIBASE,4),%eax # resolved entry 23 movl rIBASE,OUT_ARG1(%esp) # for dvmResolveInstField 24 movl rSELF,rIBASE 26 movl offThread_method(rIBASE),rIBASE # rIBASE<- current metho [all...] |
OP_IPUT.S | 15 SPILL (rIBASE) 16 movzwl 2(rPC),rIBASE # rIBASE<- 0000CCCC 23 movl (%eax,rIBASE,4),%eax # resolved entry 26 movl rIBASE,OUT_ARG1(%esp) 27 movl rSELF,rIBASE 29 movl offThread_method(rIBASE),rIBASE # rIBASE<- current method 30 movl offMethod_clazz(rIBASE),rIBASE # rIBASE<- method->claz [all...] |
OP_IPUT_OBJECT.S | 14 SPILL(rIBASE) 15 movzwl 2(rPC),rIBASE # rIBASE<- 0000CCCC 22 movl (%eax,rIBASE,4),%eax # resolved entry 25 movl rIBASE,OUT_ARG1(%esp) 26 movl rSELF,rIBASE 28 movl offThread_method(rIBASE),rIBASE # rIBASE<- current method 29 movl offMethod_clazz(rIBASE),rIBASE # rIBASE<- method->claz [all...] |
OP_IPUT_WIDE.S | 12 SPILL(rIBASE) 13 movzwl 2(rPC),rIBASE # rIBASE<- 0000CCCC 20 movl (%eax,rIBASE,4),%eax # resolved entry 23 movl rIBASE,OUT_ARG1(%esp) 24 movl rSELF,rIBASE 26 movl offThread_method(rIBASE),rIBASE # rIBASE<- current method 27 movl offMethod_clazz(rIBASE),rIBASE # rIBASE<- method->claz [all...] |
OP_MUL_LONG_2ADDR.S | 6 * this code. We must spill %edx (rIBASE) because it 8 * giving us eax, ebc, ecx and rIBASE as computational 19 SPILL(rIBASE) 29 leal (%ecx,rIBASE),rIBASE # full result now in %edx:%eax 30 movl rIBASE,4(%esi) # v[A+1]<- rIBASE 34 UNSPILL(rIBASE)
|
stub.S | 7 movl offThread_curHandlerTable(%ecx),rIBASE # set up rIBASE
|
OP_MUL_INT_LIT16.S | 9 SPILL(rIBASE) 10 imull %ecx,%eax # trashes rIBASE/edx 11 UNSPILL(rIBASE)
|