From 3ae113c7d6f1b6f46d8960b284837a44fbeb2e77 Mon Sep 17 00:00:00 2001 From: bd Date: Sat, 12 Apr 2025 00:11:05 -0400 Subject: Add pipe_spec.h --- inc/pipe_spec.h | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 inc/pipe_spec.h (limited to 'inc') 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 + +/** + * 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(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 */ -- cgit v1.2.3