summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/accessor.cc8
-rw-r--r--src/utils/response.cc8
-rw-r--r--src/utils/utils.cc25
3 files changed, 38 insertions, 3 deletions
diff --git a/src/utils/accessor.cc b/src/utils/accessor.cc
new file mode 100644
index 0000000..86484c5
--- /dev/null
+++ b/src/utils/accessor.cc
@@ -0,0 +1,8 @@
+#include "accessor.h"
+#include <iostream>
+
+std::ostream &operator<<(std::ostream &os, Accessor a)
+{
+ const std::string nameA[] = {"IDLE", "MEM", "FETCH", "L1CACHE", "SIDE"};
+ return os << nameA[a];
+}
diff --git a/src/utils/response.cc b/src/utils/response.cc
new file mode 100644
index 0000000..def6578
--- /dev/null
+++ b/src/utils/response.cc
@@ -0,0 +1,8 @@
+#include "response.h"
+#include <iostream>
+
+std::ostream &operator<<(std::ostream &os, Response r)
+{
+ const std::string nameR[] = {"OK", "WAIT", "BLOCKED"};
+ return os << nameR[r];
+}
diff --git a/src/utils/utils.cc b/src/utils/utils.cc
index dfeb2b3..5de8e89 100644
--- a/src/utils/utils.cc
+++ b/src/utils/utils.cc
@@ -1,11 +1,30 @@
#include "utils.h"
#include "definitions.h"
+#include <cstdarg>
+#include <string>
+#include <vector>
void get_bit_fields(int address, int *tag, int *index, int *offset)
{
- *tag =
- GET_MID_BITS(address, LINE_SPEC + L1_CACHE_SPEC,
- MEM_SPEC + LINE_SPEC + L1_CACHE_SPEC);
+ *tag = GET_MID_BITS(
+ address, LINE_SPEC + L1_CACHE_SPEC,
+ MEM_SPEC + LINE_SPEC + L1_CACHE_SPEC);
*index = GET_MID_BITS(address, LINE_SPEC, L1_CACHE_SPEC + LINE_SPEC);
*offset = GET_LS_BITS(address, LINE_SPEC);
}
+
+const std::string string_format(const char *const zcFormat, ...)
+{
+ va_list vaArgs;
+ va_start(vaArgs, zcFormat);
+
+ va_list vaArgsCopy;
+ va_copy(vaArgsCopy, vaArgs);
+ const int iLen = std::vsnprintf(NULL, 0, zcFormat, vaArgsCopy);
+ va_end(vaArgsCopy);
+
+ std::vector<char> zc(iLen + 1);
+ std::vsnprintf(zc.data(), zc.size(), zcFormat, vaArgs);
+ va_end(vaArgs);
+ return std::string(zc.data(), iLen);
+}