libclues
Linux C++ Tracing Library
Loading...
Searching...
No Matches
RegisterSet.cxx
1// C++
2#include <ostream>
3
4// Clues
5#include <clues/RegisterSet.hxx>
6#include <clues/dso_export.h>
7
8namespace clues {
9
10template class RegisterSet<ABI::I386>;
11template class RegisterSet<ABI::X86_64>;
12template class RegisterSet<ABI::X32>;
13
14} // end ns
15
16template <clues::ABI abi>
17std::ostream& operator<<(std::ostream &o, const clues::RegisterSet<abi> &rs) {
18 auto &data = rs.raw();
19 auto names = data.registerNames();
20 auto values = data.array();
21
22 for (size_t i = 0; i < data.NUM_REGS; i++) {
23 if (i)
24 o << "\n";
25 o << names[i] << " = " << values[i];
26 }
27
28 return o;
29}
30
31template CLUES_API std::ostream& operator<<(std::ostream&, const clues::RegisterSet<clues::ABI::X86_64>&);
32template CLUES_API std::ostream& operator<<(std::ostream&, const clues::RegisterSet<clues::ABI::X32>&);
33template CLUES_API std::ostream& operator<<(std::ostream&, const clues::RegisterSet<clues::ABI::I386>&);
34template CLUES_API std::ostream& operator<<(std::ostream&, const clues::RegisterSet<clues::ABI::AARCH64>&);
Holds a set of registers for the given ABI.
auto & raw() const
Provides access to the raw RegisterData based data structure.