diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-15 22:16:31 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-15 22:16:31 +0100 |
commit | cd19f1e1d30f52c073b6871c436e770ce2ffdda0 (patch) | |
tree | e91d680d6f7cc52d790e5fe708fb09551206d3bf /src/inst.h | |
parent | 1cb54dc9949f80ce1bc8c54a806ebea920c70ec5 (diff) | |
download | ovm-cd19f1e1d30f52c073b6871c436e770ce2ffdda0.tar.gz ovm-cd19f1e1d30f52c073b6871c436e770ce2ffdda0.tar.bz2 ovm-cd19f1e1d30f52c073b6871c436e770ce2ffdda0.zip |
Better checking of opcode types
Introduced an enum (opcode_type_t) for the masks and values of each
opcode, which allows defining a single enum which checks an opcode by
a opcode_type_t.
Diffstat (limited to 'src/inst.h')
-rw-r--r-- | src/inst.h | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -39,10 +39,16 @@ typedef enum OP_HALT, } opcode_t; -#define OPCODE_IS_PUSH(OPCODE) (((OPCODE)&0b1) == 0b1) -#define OPCODE_IS_PUSH_REG(OPCODE) (((OPCODE)&0b10) == 0b10) -#define OPCODE_IS_POP(OPCODE) (((OPCODE)&0b100) == 0b100) -#define OPCODE_IS_MOV(OPCODE) (((OPCODE)&0b1000) == 0b1000) +// Masks and values to check if an opcode is of a type +typedef enum +{ + OP_TYPE_PUSH = 0b1, + OP_TYPE_PUSH_REGISTER = 0b10, + OP_TYPE_POP = 0b100, + OP_TYPE_MOV = 0b1000, +} opcode_type_t; + +#define OPCODE_IS_TYPE(OPCODE, TYPE) ((OPCODE & TYPE) == TYPE) typedef struct { |