Compare commits

..

No commits in common. "58311b37dbec793328f4d03f3ec5742cafc99ef3" and "bf0a5a80dea775492d01c8e251ca1dbc2cfa5109" have entirely different histories.

View File

@ -20,8 +20,6 @@ iss::plugin::cov::cov(std::string const &filename)
, filename(filename) , filename(filename)
{ {
output.open("output.trc"); output.open("output.trc");
jumped = false;
first = true;
} }
iss::plugin::cov::~cov() { iss::plugin::cov::~cov() {
@ -81,47 +79,13 @@ bool iss::plugin::cov::registration(const char *const version, vm_if& vm) {
} }
inline string formatPC(uint64_t pc) {
stringstream stream;
stream << "0x" << std::hex << pc;
return stream.str();
}
void iss::plugin::cov::callback(instr_info_t iinfo, const exec_info& einfo) { void iss::plugin::cov::callback(instr_info_t iinfo, const exec_info& einfo) {
// auto delay = 0; // if((instr_if->get_next_pc() - instr_if->get_pc() != 4) ||( instr_if->get_next_pc() - instr_if->get_pc() != 2)){
// auto entry = delays[iinfo.instr_id]; // std::cout << "jump from " << std::hex << instr_if->get_pc() << " to " << instr_if->get_next_pc()<< " after " << std::dec << counter <<" linear instructions" <<std::endl;
// bool taken = einfo.branch_taken; // counter = 0;
// if (einfo.branch_taken) // }else {
// delay = entry.taken; // counter++;
// else
// delay = entry.not_taken;
//
// if (first){
// output << formatPC(instr_if->get_pc()) << "," << delay;
// first = false;
// } // }
// if(instr_if->get_next_pc()-instr_if->get_pc() != delays[iinfo.instr_id].size/8){
// //The goal is to keep the output in start-target pairs, so after a jump the target address needs to get written
// //to the output. If the target happens to also be a start, we keep the pairing by adding a 0-delay entry.
// if (jumped)
// output <<"\n" <<formatPC(instr_if->get_pc()) << "," << 0;
// output <<"\n" << formatPC(instr_if->get_pc()) << "," << delay;
// jumped = true;
// }
// else{
// if (jumped){
// output <<"\n" << formatPC(instr_if->get_pc()) << "," << delay;
// jumped = false;
// }
// else if(delay!=1){
// output <<"\n" << formatPC(instr_if->get_pc()) << "," << delay;
// output <<"\n" << formatPC(instr_if->get_pc()) << "," << 0;
// }
//
// }
//source code for the full output
auto delay = 0; auto delay = 0;
auto entry = delays[iinfo.instr_id]; auto entry = delays[iinfo.instr_id];
bool taken = einfo.branch_taken; bool taken = einfo.branch_taken;