import jp.igapyon.jcfa.util.JcfaUtil;\r
import jp.igapyon.jcfa.util.JcfaWriteUtil;\r
import jp.igapyon.jcfa.vo.JcfaClass;\r
+import jp.igapyon.jcfa.vo.JcfaCode;\r
import jp.igapyon.jcfa.vo.JcfaField;\r
import jp.igapyon.jcfa.vo.JcfaMethod;\r
import jp.igapyon.jcfa.vo.JcfaUnit;\r
\r
final byte[] codes = code.getCode();\r
for (int pc = 0; pc < codes.length; pc++) {\r
- final short opcode = JcfaUtil.byte2UnsignedByte(codes[pc]);\r
- short operands = Constants.NO_OF_OPERANDS[opcode];\r
+ final JcfaCode jcfaCode = new JcfaCode();\r
+ jcfaMethod.getCodeList().add(jcfaCode);\r
+\r
+ jcfaCode.setOpcode(JcfaUtil.byte2UnsignedByte(codes[pc]));\r
+ jcfaCode.getComment().getCommentList()\r
+ .add("opcode: " + jcfaCode.getOpcode());\r
+\r
+ short operands = Constants.NO_OF_OPERANDS[jcfaCode.getOpcode()];\r
if (operands < 0) {\r
- System.err.println(" TODO negative value:"\r
- + Constants.OPCODE_NAMES[opcode] + ": " + operands);\r
- // break;\r
+ jcfaCode.getComment()\r
+ .getCommentList()\r
+ .add("TODO negative value:"\r
+ + Constants.OPCODE_NAMES[jcfaCode.getOpcode()]\r
+ + ": " + operands);\r
+ break;\r
}\r
\r
- switch (opcode) {\r
+ switch (jcfaCode.getOpcode()) {\r
case Constants.RETURN: {\r
System.out.println(" " + pc + ": "\r
- + Constants.OPCODE_NAMES[opcode]);\r
+ + Constants.OPCODE_NAMES[jcfaCode.getOpcode()]);\r
break;\r
}\r
case Constants.GETSTATIC: {\r
System.out.println(" "\r
+ pc\r
+ ": "\r
- + Constants.OPCODE_NAMES[opcode]\r
+ + Constants.OPCODE_NAMES[jcfaCode.getOpcode()]\r
+ ": "\r
+ JcfaUtil.getConstantFieldrefString(jc, codes[pc + 1],\r
codes[pc + 2]));\r
}\r
case Constants.LDC: {\r
System.out.println(" " + pc + ": "\r
- + Constants.OPCODE_NAMES[opcode] + ": "\r
+ + Constants.OPCODE_NAMES[jcfaCode.getOpcode()] + ": "\r
+ JcfaUtil.getConstantString(jc, codes[pc + 1]));\r
}\r
break;\r
final int operand = JcfaUtil.byte2UnsignedShort(codes[pc + 1],\r
codes[pc + 2]);\r
System.out.println(" " + pc + ": "\r
- + Constants.OPCODE_NAMES[opcode] + ": "\r
+ + Constants.OPCODE_NAMES[jcfaCode.getOpcode()] + ": "\r
+ JcfaUtil.getConstantMethodRefString(jc, operand));\r
}\r
break;\r
break;\r
default: {\r
System.out.println(" " + pc + ": "\r
- + Constants.OPCODE_NAMES[opcode] + " (" + operands\r
- + ")");\r
+ + Constants.OPCODE_NAMES[jcfaCode.getOpcode()] + " ("\r
+ + operands + ")");\r
}\r
break;\r
}\r