void RegisterStateGeneric::initialize_nonoverlapping(const std::vector<RegisterDescriptor> ®s, bool initialize_to_zero) { clear(); for (size_t i=0; i<regs.size(); ++i) { std::string name = regdict->lookup(regs[i]); SValuePtr val; if (initialize_to_zero) { val = get_protoval()->number_(regs[i].get_nbits(), 0); } else { val = get_protoval()->undefined_(regs[i].get_nbits()); if (!name.empty()) val->set_comment(name+"_0"); } registers_.insertMaybeDefault(regs[i]).push_back(RegPair(regs[i], val)); } }
size_t RiscOperators::add_subdomain(const BaseSemantics::RiscOperatorsPtr &subdomain, const std::string &name, bool activate) { assert(subdomain!=NULL); size_t idx = subdomains.size(); subdomains.push_back(subdomain); active.push_back(activate); if (idx>=formatter.subdomain_names.size()) formatter.subdomain_names.resize(idx+1, ""); formatter.subdomain_names[idx] = name; SValue::promote(get_protoval())->set_subvalue(idx, subdomain->get_protoval()); return idx; }