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 + -
显示快捷键?