summaryrefslogtreecommitdiffstats
path: root/zpu/sw/simulator/com/zylin/zpu/stats/Instruction.java
diff options
context:
space:
mode:
Diffstat (limited to 'zpu/sw/simulator/com/zylin/zpu/stats/Instruction.java')
-rw-r--r--zpu/sw/simulator/com/zylin/zpu/stats/Instruction.java62
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;
+ }
+ }
+}
OpenPOWER on IntegriCloud