diff options
Diffstat (limited to 'zpu/sw/simulator/com/zylin/zpu/stats/Instruction.java')
-rw-r--r-- | zpu/sw/simulator/com/zylin/zpu/stats/Instruction.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/zpu/sw/simulator/com/zylin/zpu/stats/Instruction.java b/zpu/sw/simulator/com/zylin/zpu/stats/Instruction.java new file mode 100644 index 0000000..252dd7f --- /dev/null +++ b/zpu/sw/simulator/com/zylin/zpu/stats/Instruction.java @@ -0,0 +1,62 @@ +package com.zylin.zpu.stats; + +public class Instruction +{ + public class DumpCycles implements DumpIt + { + public int dumpIt(int i) + { + return insn[i].cycles; + } + } + + + + public Instruction[] insn=new Instruction[256]; + public int count; + public int cycles; + + public Instruction addInstruction(int i) + { + if (insn[i]==null) + { + insn[i]=new Instruction(); + } + return insn[i]; + } + + /** + * Recursive print of statistics + */ + public void printStats() + { + System.out.println("Count dump"); + DumpIt cDump = new DumpCount(); + printCount("", cDump); + } + + /** + * Recursive print of counts + * @param string + * @param dumpIt TODO + */ + private void printCount(String string, DumpIt dumpIt) + { + for (int i=0; i<insn.length; i++) + { + if (insn[i]!=null) + { + insn[i].printCount(string + ", " + i, dumpIt); + System.out.println("Count: " + insn[i].count + string + ", " + i); + } + } + } + + class DumpCount implements DumpIt + { + public int dumpIt(int i) + { + return insn[i].count; + } + } +} |