X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=3b_sim%2Fccpu.cpp;h=9cf728bcca924f9875797fab4e41ba46ba4c66e0;hb=c0fc93c02587d16121457a37aa0f67ca6e3a2bc2;hp=6bfb65481fd61162ddcb9afd2ec3a9f14f102de1;hpb=c67557ba519b6d94898a031e86a8db69675f6c1c;p=calu.git diff --git a/3b_sim/ccpu.cpp b/3b_sim/ccpu.cpp index 6bfb654..9cf728b 100644 --- a/3b_sim/ccpu.cpp +++ b/3b_sim/ccpu.cpp @@ -6,6 +6,29 @@ //void registerExtension() {}; +const char* expression = "(;.*)|(r0)|(rX)|(r1[0-5])|(r[1-5])|(r[6-9])|(0x[a-fA-F0-9]+)|([-]?\\d+)"; +const char* format = "(?1$&)" + //Return-Register: violett + "(?2\033[0m\033[35m$&\033[0m\\3:)" + // Callee-saved Register: rot + "(?4\033[0m\033[31m$&\033[0m\\3:)" + //Argument-Register: gruen + "(?5\033[0m\033[32m$&\033[0m\\3:)" + // Temporary Register: gelb + "(?6\033[0m\033[33m$&\033[0m\\3:)" + // Zahlenwerte: tuerkis + "(?7\033[0m\033[36m$&\033[0m\\3:)" + "(?8\033[0m\033[36m$&\033[0m\\3:)"; + + +string CCpu::colorifyInstr(string instr) +{ + boost::regex e; + e.assign(expression); + return boost::regex_replace(instr, e, format, boost::match_default | boost::format_all); +} + + void CCpu::tick() { // signal extensions @@ -18,12 +41,12 @@ void CCpu::tick() throw string("Out of Instructions!"); } if(this->conditionMet(instr->getCondition())) { - cout << "Executing: " << instr->toString() << endl; + cout << color(green,black) << "Executing: " << color(white,black) << colorifyInstr(instr->toString()) << endl; instr->execInstr(); this->incPerfBy(instr->getClockCount()); } else { - cout << "Didn't Execute " << instr->toString() << "; condition wasn't met" << endl; + cout << color(red,black) << "Didn't Execute " << color(white,black) << colorifyInstr(instr->toString()) << "; condition wasn't met" << endl; this->incPerf(); }