about summary refs log tree commit diff stats
path: root/subx/010---vm.cc
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-02-23 13:35:19 -0800
committerKartik Agaram <vc@akkartik.com>2019-02-23 13:35:19 -0800
commite5998f74ac29bb4bf2aedfdd6fbea801ffdb08f6 (patch)
tree28b5476fa39c2791be3a89fce05f0847ed75c24d /subx/010---vm.cc
parented4e645306a3679cebe1ef273f3a33221d713f23 (diff)
downloadmu-e5998f74ac29bb4bf2aedfdd6fbea801ffdb08f6.tar.gz
4986 - spending some time improving SubX traces
Now that our test runs are getting longer, debugging is again becoming a
bottleneck. Time to start using trace depths along with `mu browse-trace`
from the top-level.
Diffstat (limited to 'subx/010---vm.cc')
-rw-r--r--subx/010---vm.cc14
1 files changed, 8 insertions, 6 deletions
diff --git a/subx/010---vm.cc b/subx/010---vm.cc
index 3af4a579..0d30f3cd 100644
--- a/subx/010---vm.cc
+++ b/subx/010---vm.cc
@@ -297,13 +297,12 @@ void run_one_instruction() {
   uint8_t op=0, op2=0, op3=0;
   // Run One Instruction
   if (Dump_trace) {
-    cerr << "registers: ";
     dump_registers();
-//?     dump_stack();  // for debugging; not defined until later layer
+    // End Dump Info for Instruction
   }
   trace(90, "run") << "inst: 0x" << HEXWORD << EIP << end();
   op = next();
-  if (Dump_trace) cerr << "opcode: " << HEXBYTE << NUM(op) << '\n';
+  trace(90, "run") << "opcode: " << HEXBYTE << NUM(op) << end();
   switch (op) {
   case 0xf4:  // hlt
     EIP = End_of_program;
@@ -366,11 +365,14 @@ inline uint8_t next() {
 }
 
 void dump_registers() {
+  ostringstream out;
+  out << "registers: ";
   for (int i = 0;  i < NUM_INT_REGISTERS;  ++i) {
-    if (i > 0) cerr << "; ";
-    cerr << "  " << i << ": " << std::hex << std::setw(8) << std::setfill('_') << Reg[i].u;
+    if (i > 0) out << "; ";
+    out << "  " << i << ": " << std::hex << std::setw(8) << std::setfill('_') << Reg[i].u;
   }
-  cerr << " -- SF: " << SF << "; ZF: " << ZF << "; OF: " << OF << '\n';
+  out << " -- SF: " << SF << "; ZF: " << ZF << "; OF: " << OF;
+  trace(90, "run") << out.str() << end();
 }
 
 //: start tracking supported opcodes