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 register range arguments (an 23 * "A" start register and a register count). 24 */ 25 public final class RegisterRangeDecodedInstruction extends DecodedInstruction { 26 /** register argument "A" */ 27 private final int a; 28 29 /** register count */ 30 private final int registerCount; 31 32 /** 33 * Constructs an instance. 34 */ RegisterRangeDecodedInstruction(InstructionCodec format, int opcode, int index, IndexType indexType, int target, long literal, int a, int registerCount)35 public RegisterRangeDecodedInstruction(InstructionCodec format, int opcode, 36 int index, IndexType indexType, int target, long literal, 37 int a, int registerCount) { 38 super(format, opcode, index, indexType, target, literal); 39 40 this.a = a; 41 this.registerCount = registerCount; 42 } 43 44 /** @inheritDoc */ getRegisterCount()45 public int getRegisterCount() { 46 return registerCount; 47 } 48 49 /** @inheritDoc */ getA()50 public int getA() { 51 return a; 52 } 53 54 /** @inheritDoc */ withIndex(int newIndex)55 public DecodedInstruction withIndex(int newIndex) { 56 return new RegisterRangeDecodedInstruction( 57 getFormat(), getOpcode(), newIndex, getIndexType(), 58 getTarget(), getLiteral(), a, registerCount); 59 } 60 } 61