Home | History | Annotate | Download | only in instructions
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.dx.io.instructions;
     18 
     19 import com.android.dx.io.IndexType;
     20 
     21 /**
     22  * A decoded Dalvik instruction which has five register arguments.
     23  */
     24 public final class FiveRegisterDecodedInstruction extends DecodedInstruction {
     25     /** register argument "A" */
     26     private final int a;
     27 
     28     /** register argument "B" */
     29     private final int b;
     30 
     31     /** register argument "C" */
     32     private final int c;
     33 
     34     /** register argument "D" */
     35     private final int d;
     36 
     37     /** register argument "E" */
     38     private final int e;
     39 
     40     /**
     41      * Constructs an instance.
     42      */
     43     public FiveRegisterDecodedInstruction(InstructionCodec format, int opcode,
     44             int index, IndexType indexType, int target, long literal,
     45             int a, int b, int c, int d, int e) {
     46         super(format, opcode, index, indexType, target, literal);
     47 
     48         this.a = a;
     49         this.b = b;
     50         this.c = c;
     51         this.d = d;
     52         this.e = e;
     53     }
     54 
     55     /** @inheritDoc */
     56     public int getRegisterCount() {
     57         return 5;
     58     }
     59 
     60     /** @inheritDoc */
     61     public int getA() {
     62         return a;
     63     }
     64 
     65     /** @inheritDoc */
     66     public int getB() {
     67         return b;
     68     }
     69 
     70     /** @inheritDoc */
     71     public int getC() {
     72         return c;
     73     }
     74 
     75     /** @inheritDoc */
     76     public int getD() {
     77         return d;
     78     }
     79 
     80     /** @inheritDoc */
     81     public int getE() {
     82         return e;
     83     }
     84 
     85     /** @inheritDoc */
     86     public DecodedInstruction withIndex(int newIndex) {
     87         return new FiveRegisterDecodedInstruction(
     88                 getFormat(), getOpcode(), newIndex, getIndexType(),
     89                 getTarget(), getLiteral(), a, b, c, d, e);
     90     }
     91 }
     92