summaryrefslogtreecommitdiff
path: root/inc/utils.h
blob: df8d374898712cb44f3991f5409511a1afaccc6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#ifndef UTILS_H
#define UTILS_H
#include <string>

/**
 * Parse an address into a tag, index into the cache table, and a line
 * offset.
 * @param the address to be parsed
 * @param the resulting tag
 * @param the resulting index
 * @param the resulting offset
 */
void get_bit_fields(int address, int *tag, int *index, int *offset);

/**
 * Formats a string using snprintf.
 * @param an object that represents the format string
 * @param arguments to be formatted
 * @return a string object holding the formatted result
 */
const std::string string_format(const char *const zcFormat, ...);

/**
 * Given `address`, returns an address that is within the current memory size
 * using a clean wrap.
 * @param an address
 * @return an address guaranteed to be within range.
 */
int wrap_address(int address);

/**
 * Given `address`, returns the line and word it is in.
 * @param an address
 * @param the line (row) `address` is in
 * @param the word (column) `address` corresponds to
 */
void get_memory_index(int address, int &line, int &word);

#endif /* UTILS_H_INCLUDED */