1d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein/* 2d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Copyright (C) 2011 The Android Open Source Project 3d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * 4d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Licensed under the Apache License, Version 2.0 (the "License"); 5d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * you may not use this file except in compliance with the License. 6d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * You may obtain a copy of the License at 7d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * 8d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * http://www.apache.org/licenses/LICENSE-2.0 9d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * 10d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Unless required by applicable law or agreed to in writing, software 11d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * distributed under the License is distributed on an "AS IS" BASIS, 12d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * See the License for the specific language governing permissions and 14d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * limitations under the License. 15d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */ 16d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein 17537939ca06a47668f719ee06159303bcd3175c69Dan Bornsteinpackage com.android.dx.io.instructions; 18d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein 19d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein/** 20d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Cursor over code units, for reading or writing out Dalvik bytecode. 21d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */ 22d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornsteinpublic interface CodeCursor { 23d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein /** 24d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Gets the cursor. The cursor is the offset in code units from 25d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * the start of the input of the next code unit to be read or 26d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * written, where the input generally consists of the code for a 27d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * single method. 28d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */ 29d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein public int cursor(); 30d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein 31d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein /** 32d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Gets the base address associated with the current cursor. This 33d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * differs from the cursor value when explicitly set (by {@link 34e8bf740e4843a2e7a41bfa6c2f96f8ae4a7147fcChris Warrington * #setBaseAddress}). This is used, in particular, to convey base 35d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * addresses to switch data payload instructions, whose relative 36d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * addresses are relative to the address of a dependant switch 37d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * instruction. 38d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */ 39d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein public int baseAddressForCursor(); 40d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein 41d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein /** 42d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Sets the base address for the given target address to be as indicated. 43d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * 44d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * @see #baseAddressForCursor 45d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */ 46d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein public void setBaseAddress(int targetAddress, int baseAddress); 47d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein} 48