diff options
Diffstat (limited to 'inc/pipe_spec.h')
-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 */ |