From 62fa808a9b15cc4c044469fc6fc8fbf1b3532921 Mon Sep 17 00:00:00 2001 From: jochen Date: Sun, 25 Oct 1998 16:33:49 +0000 Subject: [PATCH] Initial revision git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@71 379699f6-c40d-0410-875b-85095c16579e --- jode/jode/flow/SpecialBlock.java | 59 ++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 jode/jode/flow/SpecialBlock.java diff --git a/jode/jode/flow/SpecialBlock.java b/jode/jode/flow/SpecialBlock.java new file mode 100644 index 0000000..00e8c95 --- /dev/null +++ b/jode/jode/flow/SpecialBlock.java @@ -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)); + } +}