BuilderInstruction21ih.java revision e80efa670f1027fdf3882a298216a460199e38d0
1e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver/* 2e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * Copyright 2012, Google Inc. 3e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * All rights reserved. 4e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * 5e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * Redistribution and use in source and binary forms, with or without 6e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * modification, are permitted provided that the following conditions are 7e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * met: 8e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * 9e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * * Redistributions of source code must retain the above copyright 10e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * notice, this list of conditions and the following disclaimer. 11e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * * Redistributions in binary form must reproduce the above 12e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * copyright notice, this list of conditions and the following disclaimer 13e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * in the documentation and/or other materials provided with the 14e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * distribution. 15e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * * Neither the name of Google Inc. nor the names of its 16e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * contributors may be used to endorse or promote products derived from 17e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * this software without specific prior written permission. 18e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * 19e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver */ 31e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 32e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverpackage org.jf.dexlib2.builder.instruction; 33e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 34e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport org.jf.dexlib2.Format; 35e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport org.jf.dexlib2.Opcode; 36e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport org.jf.dexlib2.builder.BuilderInstruction; 37e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport org.jf.dexlib2.iface.instruction.formats.Instruction21ih; 38e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport org.jf.dexlib2.util.Preconditions; 39e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 40e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport javax.annotation.Nonnull; 41e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 42e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverpublic class BuilderInstruction21ih extends BuilderInstruction implements Instruction21ih { 43e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver public static final Format FORMAT = Format.Format21ih; 44e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 45e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver protected final int registerA; 46e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver protected final int literal; 47e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 48e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver public BuilderInstruction21ih(@Nonnull Opcode opcode, 49e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver int registerA, 50e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver int literal) { 51e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver super(opcode); 52e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver this.registerA = Preconditions.checkByteRegister(registerA); 53e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver this.literal = Preconditions.checkIntegerHatLiteral(literal); 54e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver } 55e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 56e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver @Override public int getRegisterA() { return registerA; } 57e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver @Override public int getNarrowLiteral() { return literal; } 58e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver @Override public long getWideLiteral() { return literal; } 59e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver @Override public short getHatLiteral() { return (short)(literal >>> 16); } 60e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 61e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver @Override public Format getFormat() { return FORMAT; } 62e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver} 63