From 9251fddfdfb11b9e1b2dff643aa20ec82e9f7036 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Wed, 2 Aug 2023 20:54:08 +0300 Subject: add return values to main loop --- ops/common.h | 13 ++++++++----- ops/end.c | 3 +-- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'ops') diff --git a/ops/common.h b/ops/common.h index 546b064..6b124b3 100644 --- a/ops/common.h +++ b/ops/common.h @@ -6,19 +6,22 @@ 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); +typedef reg_t (*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)); + return ((op_call)(&__next_op))((sp), (a), (x), (y), (o)); -#define JUMP(target, sp, a, x, y, o) \ +#define CALL(target, sp, a, x, y, o) \ ((op_call)(target))((sp), (a), (x), (y), (o)); +#define JUMP(target, sp, a, x, y, o) \ + return CALL(target, sp, a, x, y, o); + #define BRANCH(target, cond, sp, a, x, y, o) \ - ((op_call)((cond) ? (void *)(target) : (void *)&__next_op)) \ + return ((op_call)((cond) ? (void *)(target) : (void *)&__next_op)) \ ((sp), (a), (x), (y), (o)); \ -#define DEFINE_OP(name) void _op(reg_t *sp, reg_t a, reg_t x, reg_t y, reg_t o) +#define DEFINE_OP(name) reg_t _op(reg_t *sp, reg_t a, reg_t x, reg_t y, reg_t o) #define UNUSED(x) (void)(x); diff --git a/ops/end.c b/ops/end.c index 3abf4e0..34f2d9d 100644 --- a/ops/end.c +++ b/ops/end.c @@ -6,8 +6,7 @@ DEFINE_OP(end) { UNUSED(sp); UNUSED(a); - UNUSED(x); UNUSED(y); UNUSED(o); - return; + return x; } -- cgit v1.3