15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2007 The Android Open Source Project 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License"); 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * you may not use this file except in compliance with the License. 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You may obtain a copy of the License at 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * http://www.apache.org/licenses/LICENSE-2.0 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Unless required by applicable law or agreed to in writing, software 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS, 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * See the License for the specific language governing permissions and 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * limitations under the License. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)package com.android.dx.dex.code.form; 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)import com.android.dx.dex.code.DalvInsn; 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)import com.android.dx.dex.code.InsnFormat; 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)import com.android.dx.dex.code.SimpleInsn; 2253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)import com.android.dx.util.AnnotatedOutput; 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 245d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)/** 25a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * Instruction format {@code 10x}. See the instruction format spec 2653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * for details. 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)public final class Form10x extends InsnFormat { 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** {@code non-null;} unique instance of this class */ 30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) public static final InsnFormat THE_ONE = new Form10x(); 31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Constructs an instance. This class is not publicly 34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * instantiable. Use {@link #THE_ONE}. 35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) private Form10x() { 37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // This space intentionally left blank. 38d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 39d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** {@inheritDoc} */ 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) @Override 425d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) public String insnArgString(DalvInsn insn) { 4351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) // This format has no arguments. 4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return ""; 4509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 4609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** {@inheritDoc} */ 48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) @Override 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) public String insnCommentString(DalvInsn insn, boolean noteIndices) { 5009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // This format has no comment. 5109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return ""; 5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 53d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 54d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** {@inheritDoc} */ 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) @Override 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) public int codeSize() { 575d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) return 1; 585d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) } 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** {@inheritDoc} */ 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) @Override 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) public boolean isCompatible(DalvInsn insn) { 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (insn instanceof SimpleInsn) && 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (insn.getRegisters().size() == 0); 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** {@inheritDoc} */ 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) @Override 69591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch public void writeTo(AnnotatedOutput out, DalvInsn insn) { 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) write(out, opcodeUnit(insn, 0)); 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)