OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / dalvik / vm / mterp / x86-atom / OP_MUL_INT_2ADDR.S
1    /* Copyright (C) 2008 The Android Open Source Project
2     *
3     * Licensed under the Apache License, Version 2.0 (the "License");
4     * you may not use this file except in compliance with the License.
5     * You may obtain a copy of the License at
6     *
7     * http://www.apache.org/licenses/LICENSE-2.0
8     *
9     * Unless required by applicable law or agreed to in writing, software
10     * distributed under the License is distributed on an "AS IS" BASIS,
11     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12     * See the License for the specific language governing permissions and
13     * limitations under the License.
14     */
15
16    /*
17     * File: OP_MUL_INT_2ADDR.S
18     */
19
20     movl        rINST, %edx             # %edx<- BA
21     shr         $$4, %edx               # %edx<- B
22     andl        $$15, rINST             # rINST<- A
23     movl        rINST, %ecx             # %ecx<- A
24     FFETCH_ADV  1, %eax                 # %eax<- next instruction hi; fetch, advance
25     GET_VREG    %ecx                    # %ecx<- vA
26     imul        (rFP, %edx, 4), %ecx    # %ecx<- vA * vB
27     addl        $$2, rPC                  # update PC
28     SET_VREG    %ecx, rINST             # vAA<- %ecx; result
29     FGETOP_JMP2 %eax                    # jump to next instruction; getop, jmp