diff options
author | bd <bdunahu@operationnull.com> | 2025-04-12 00:11:05 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-04-12 00:11:05 -0400 |
commit | 3ae113c7d6f1b6f46d8960b284837a44fbeb2e77 (patch) | |
tree | 6acbfd27652c2b83686df93c21918a877a0451e8 /inc | |
parent | 249e5bc94ef86307ecf68f8a07c65b2672ebb21c (diff) |
Add pipe_spec.h
Diffstat (limited to 'inc')
-rw-r--r-- | inc/pipe_spec.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/inc/pipe_spec.h b/inc/pipe_spec.h new file mode 100644 index 0000000..772314e --- /dev/null +++ b/inc/pipe_spec.h @@ -0,0 +1,68 @@ +#ifndef PIPE_SPEC_H +#define PIPE_SPEC_H +#include "logger.h" +#include <cmath> + +/** + * The number of bits to specify a word in a line + */ +#define LINE_SPEC 2 +/** + * The total number of words in a line + */ +#define LINE_SIZE static_cast<int>(pow(2, 2)) + +/** + * The number of general purpose registers + */ +#define GPR_NUM 16 + +/** + * The number of vector registers + */ +#define V_NUM 8 + +/** + * The number of bits to specify an instruction type + */ +#define TYPE_SIZE 2 + +/** + * The number of bits to specify a register + */ +#define REG_SIZE 5 + +/** + * The number of bits to specify an R-Type opcode. + */ +#define R_OPCODE_SIZE 5 + +/** + * The number of bits to specify an opcode. + */ +#define OPCODE_SIZE 4 + +/** + * The maximum value an integer can hold. + * The minimum is always this number plus one negated. + */ +#define MAX_INT 2147483647 + +/** + * Return the N least-significant bits from integer K using a bit mask + * @param the integer to be parsed + * @param the number of bits to be parsed + * @return the N least-significant bits from K + */ +#define GET_LS_BITS(k, n) ((k) & ((1 << (n)) - 1)) +/** + * Return the bits from integer K starting at N and ending at M using a bit + * mask + * @param the integer to be parsed + * @param the index of the starting bit to be parsed + * @param the index of the ending bit to be parsed + * @return a section of bits from K + */ +#define GET_MID_BITS(k, m, n) GET_LS_BITS((k) >> (m), ((n) - (m))) + +#endif /* DEFINITIONS_H_INCLUDED */ |