diff options
author | Siddarth Suresh <155843085+SiddarthSuresh98@users.noreply.github.com> | 2025-03-09 13:19:06 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-09 13:19:06 -0400 |
commit | 57faaa064046824fec72e81a7e0973c495263395 (patch) | |
tree | 9469921e3a82ccfef3c8c9deb53ea4091b4c6040 /inc | |
parent | e4ad6c6694aa1fe9762714507c9ff3488ec21c90 (diff) | |
parent | 87bc2a9e172a0f693184c85f0d9661d47c99cd7e (diff) |
Merge pull request #17 from bdunahu/bdunahu
Add get_bit_fields, which parses cache fields from a memory address
Diffstat (limited to 'inc')
-rw-r--r-- | inc/definitions.h | 22 | ||||
-rw-r--r-- | inc/utils.h | 14 |
2 files changed, 33 insertions, 3 deletions
diff --git a/inc/definitions.h b/inc/definitions.h index 1593162..4b01be9 100644 --- a/inc/definitions.h +++ b/inc/definitions.h @@ -1,10 +1,26 @@ #ifndef DEFINITIONS_H #define DEFINITIONS_H +#include <cmath> -/** - * Defines common macros. +/* The number of bits to specify a word in a line */ +#define LINE_SPEC 2 +#define LINE_SIZE (int)pow(2, 2) -#define LINE_SIZE 4 +/* The number of bits to specify a memory line + * (/ (expt 2 15) 4) + */ +#define MEM_SPEC 13 +#define MEM_SIZE (int)pow(2, MEM_SPEC) + +/* The number of bits to specify a l1 cache line + */ +#define L1_CACHE_SPEC 5 +#define L1_CACHE_SIZE (int)pow(2, L1_CACHE_SPEC) + +/* Parses some bits. + */ +#define LAST(k, n) ((k) & ((1 << (n)) - 1)) +#define MID(k, m, n) LAST((k) >> (m), ((n) - (m))) #endif /* DEFINITIONS_H_INCLUDED */ diff --git a/inc/utils.h b/inc/utils.h new file mode 100644 index 0000000..e258ed8 --- /dev/null +++ b/inc/utils.h @@ -0,0 +1,14 @@ +#ifndef UTILS_H +#define UTILS_H + +/** + * 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); + +#endif /* UTILS_H_INCLUDED */ |