bytecodeviewer.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 1,175 行 · 第 1/2 页

JAVA
1,175
字号
/**
 * $Id: BytecodeViewer.java,v 1.7 2004/02/24 08:04:23 epr Exp $
 */
package org.jnode.vm.bytecode;

import org.jnode.vm.classmgr.VmConstClass;
import org.jnode.vm.classmgr.VmConstFieldRef;
import org.jnode.vm.classmgr.VmConstIMethodRef;
import org.jnode.vm.classmgr.VmConstMethodRef;
import org.jnode.vm.classmgr.VmConstString;
import org.jnode.vm.classmgr.VmMethod;

/**
 * <description>
 * 
 * @author epr
 */
public class BytecodeViewer extends BytecodeVisitor {

	private int address;
	private ControlFlowGraph cfg;
	private String indent = "";

	/**
	 * @param parser
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#setParser(org.jnode.vm.bytecode.BytecodeParser)
	 */
	public void setParser(BytecodeParser parser) {
	}

	/**
	 * Constructor for BytecodeViewer.
	 */
	public BytecodeViewer() {
		this(null);
	}

	/**
	 * Constructor for BytecodeViewer.
	 * 
	 * @param cfg
	 */
	public BytecodeViewer(ControlFlowGraph cfg) {
		this.cfg = cfg;
	}

	/**
	 * @param method
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#startMethod(org.jnode.vm.classmgr.VmMethod)
	 */
	public void startMethod(VmMethod method) {
		System.out.println("Method: " + method.getName() + ", #locals " + method.getBytecode().getNoLocals());
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#endMethod()
	 */
	public void endMethod() {
		System.out.println("end\n");
	}

	/**
	 * @param address
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#startInstruction(int)
	 */
	public void startInstruction(int address) {
		this.address = address;
		if (cfg != null) {
			final BasicBlock bb = cfg.getBasicBlock(address);
			if (bb.getStartPC() == address) {
				out("-- Start of Basic Block " + bb + " --");
			}
		}
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#endInstruction()
	 */
	public void endInstruction() {
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_nop()
	 */
	public void visit_nop() {
		out("nop");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_aconst_null()
	 */
	public void visit_aconst_null() {
		out("aconst_null");
	}

	/**
	 * @param value
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iconst(int)
	 */
	public void visit_iconst(int value) {
		out("iconst " + value);
	}

	/**
	 * @param value
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lconst(long)
	 */
	public void visit_lconst(long value) {
		out("lconst " + value);
	}

	/**
	 * @param value
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fconst(float)
	 */
	public void visit_fconst(float value) {
		out("fconst " + value);
	}

	/**
	 * @param value
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dconst(double)
	 */
	public void visit_dconst(double value) {
		out("dconst " + value);
	}

	/**
	 * @param value
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ldc(VmConstString)
	 */
	public void visit_ldc(VmConstString value) {
		out("ldc " + value);
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iload(int)
	 */
	public void visit_iload(int index) {
		out("iload " + index);
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lload(int)
	 */
	public void visit_lload(int index) {
		out("lload " + index);
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fload(int)
	 */
	public void visit_fload(int index) {
		out("fload " + index);
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dload(int)
	 */
	public void visit_dload(int index) {
		out("dload " + index);
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_aload(int)
	 */
	public void visit_aload(int index) {
		out("aload " + index);
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iaload()
	 */
	public void visit_iaload() {
		out("iaload");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_laload()
	 */
	public void visit_laload() {
		out("laload");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_faload()
	 */
	public void visit_faload() {
		out("faload");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_daload()
	 */
	public void visit_daload() {
		out("daload");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_aaload()
	 */
	public void visit_aaload() {
		out("aaload");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_baload()
	 */
	public void visit_baload() {
		out("baload");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_caload()
	 */
	public void visit_caload() {
		out("caload");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_saload()
	 */
	public void visit_saload() {
		out("saload");
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_istore(int)
	 */
	public void visit_istore(int index) {
		out("istore " + index);
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lstore(int)
	 */
	public void visit_lstore(int index) {
		out("lstore " + index);
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fstore(int)
	 */
	public void visit_fstore(int index) {
		out("fstore " + index);
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dstore(int)
	 */
	public void visit_dstore(int index) {
		out("dstore " + index);
	}

	/**
	 * @param index
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_astore(int)
	 */
	public void visit_astore(int index) {
		out("astore " + index);
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iastore()
	 */
	public void visit_iastore() {
		out("iastore");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lastore()
	 */
	public void visit_lastore() {
		out("lastore");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fastore()
	 */
	public void visit_fastore() {
		out("fastore");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dastore()
	 */
	public void visit_dastore() {
		out("dastore");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_aastore()
	 */
	public void visit_aastore() {
		out("aastore");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_bastore()
	 */
	public void visit_bastore() {
		out("bastore");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_castore()
	 */
	public void visit_castore() {
		out("castore");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_sastore()
	 */
	public void visit_sastore() {
		out("sastore");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_pop()
	 */
	public void visit_pop() {
		out("pop");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_pop2()
	 */
	public void visit_pop2() {
		out("pop2");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dup()
	 */
	public void visit_dup() {
		out("dup");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dup_x1()
	 */
	public void visit_dup_x1() {
		out("dup_x1");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dup_x2()
	 */
	public void visit_dup_x2() {
		out("dup_x2");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dup2()
	 */
	public void visit_dup2() {
		out("dup2");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dup2_x1()
	 */
	public void visit_dup2_x1() {
		out("dup2_x1");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dup2_x2()
	 */
	public void visit_dup2_x2() {
		out("dup2_x2");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_swap()
	 */
	public void visit_swap() {
		out("swap");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iadd()
	 */
	public void visit_iadd() {
		out("iadd");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ladd()
	 */
	public void visit_ladd() {
		out("ladd");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fadd()
	 */
	public void visit_fadd() {
		out("fadd");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dadd()
	 */
	public void visit_dadd() {
		out("dadd");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_isub()
	 */
	public void visit_isub() {
		out("isub");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lsub()
	 */
	public void visit_lsub() {
		out("lsub");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fsub()
	 */
	public void visit_fsub() {
		out("fsub");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dsub()
	 */
	public void visit_dsub() {
		out("dsub");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_imul()
	 */
	public void visit_imul() {
		out("imul");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lmul()
	 */
	public void visit_lmul() {
		out("lmul");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fmul()
	 */
	public void visit_fmul() {
		out("fmul");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dmul()
	 */
	public void visit_dmul() {
		out("dmul");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_idiv()
	 */
	public void visit_idiv() {
		out("idiv");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ldiv()
	 */
	public void visit_ldiv() {
		out("ldiv");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fdiv()
	 */
	public void visit_fdiv() {
		out("fdiv");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ddiv()
	 */
	public void visit_ddiv() {
		out("ddiv");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_irem()
	 */
	public void visit_irem() {
		out("irem");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lrem()
	 */
	public void visit_lrem() {
		out("lrem");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_frem()
	 */
	public void visit_frem() {
		out("frem");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_drem()
	 */
	public void visit_drem() {
		out("drem");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ineg()
	 */
	public void visit_ineg() {
		out("ineg");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lneg()
	 */
	public void visit_lneg() {
		out("lneg");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fneg()
	 */
	public void visit_fneg() {
		out("fneg");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dneg()
	 */
	public void visit_dneg() {
		out("dneg");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ishl()
	 */
	public void visit_ishl() {
		out("ishl");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lshl()
	 */
	public void visit_lshl() {
		out("lshl");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ishr()
	 */
	public void visit_ishr() {
		out("ishr");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lshr()
	 */
	public void visit_lshr() {
		out("lshr");
	}

	/**
	 * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iushr()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?