From 422b6c976e28445d2a6e14586fa416b0f16c093f Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sat, 24 Jun 2023 20:48:32 +0300 Subject: initial commit --- ops/common.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 ops/common.h (limited to 'ops/common.h') diff --git a/ops/common.h b/ops/common.h new file mode 100644 index 0000000..b447aab --- /dev/null +++ b/ops/common.h @@ -0,0 +1,24 @@ +#ifndef OPS_COMMON_H +#define OPS_COMMON_H + +typedef unsigned long reg_t; +typedef signed long sreg_t; + +typedef void (*op_call)(reg_t *sp, reg_t a, reg_t x, reg_t y, reg_t o); + +#define NEXT_OP(sp, a, x, y, o) \ + ((op_call)(&&_next_op))((sp), (a), (x), (y), (o)); _next_op: (void)1; + +#define JUMP(target, sp, a, x, y, o) \ + ((op_call)(target))((sp), (a), (x), (y), (o)); + +#define BRANCH(target, cond, sp, a, x, y, o) \ + ((op_call)((cond) ? (void *)(target) : (void *)&&_next_op)) \ + ((sp), (a), (x), (y), (o)); \ +_next_op: (void)1; + +#define DEFINE_OP(name) void name(reg_t *sp, reg_t a, reg_t x, reg_t y, reg_t o) + +#define UNUSED(x) (void)(x); + +#endif /* OPS_COMMON_H */ -- cgit v1.3