git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@71 379699f6-c40d-0410-875b-85095c16579estable
parent
a891c3b82c
commit
62fa808a9b
@ -0,0 +1,59 @@ |
|||||||
|
/* SpecialBlock (c) 1998 Jochen Hoenicke |
||||||
|
* |
||||||
|
* You may distribute under the terms of the GNU General Public License. |
||||||
|
* |
||||||
|
* IN NO EVENT SHALL JOCHEN HOENICKE BE LIABLE TO ANY PARTY FOR DIRECT, |
||||||
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF |
||||||
|
* THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF JOCHEN HOENICKE |
||||||
|
* HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
* |
||||||
|
* JOCHEN HOENICKE SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
||||||
|
* PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" |
||||||
|
* BASIS, AND JOCHEN HOENICKE HAS NO OBLIGATION TO PROVIDE MAINTENANCE, |
||||||
|
* SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
||||||
|
* |
||||||
|
* $Id$ |
||||||
|
*/ |
||||||
|
package jode.flow; |
||||||
|
import jode.TabbedPrintWriter; |
||||||
|
|
||||||
|
/** |
||||||
|
* This is the structured block for atomic instructions. |
||||||
|
*/ |
||||||
|
public class SpecialBlock extends StructuredBlock { |
||||||
|
|
||||||
|
public static int DUP = 0; |
||||||
|
public static int SWAP = 1; |
||||||
|
private static String[] output = { "DUP", "SWAP" }; |
||||||
|
|
||||||
|
/** |
||||||
|
* The type, one of DUP or SWAP |
||||||
|
*/ |
||||||
|
int type; |
||||||
|
/** |
||||||
|
* The count of stack entries that are transformed. |
||||||
|
* This is 1 for swap, and 1 or 2 for dup. |
||||||
|
*/ |
||||||
|
int count; |
||||||
|
/** |
||||||
|
* The depth that the dupped element should be put to (0,1 or 2). |
||||||
|
* For swap this is zero. |
||||||
|
*/ |
||||||
|
int depth; |
||||||
|
|
||||||
|
public SpecialBlock(int type, int count, int depth, Jump jump) { |
||||||
|
this.type = type; |
||||||
|
this.count = count; |
||||||
|
this.depth = depth; |
||||||
|
setJump(jump); |
||||||
|
} |
||||||
|
|
||||||
|
public void dumpInstruction(TabbedPrintWriter writer) |
||||||
|
throws java.io.IOException |
||||||
|
{ |
||||||
|
writer.println(output[type] |
||||||
|
+ ((count == 1) ? "" : "2") |
||||||
|
+ ((depth == 0) ? "" : "_X"+depth)); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue