aboutsummaryrefslogtreecommitdiff
path: root/src/execute.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/execute.c')
-rw-r--r--src/execute.c83
1 files changed, 44 insertions, 39 deletions
diff --git a/src/execute.c b/src/execute.c
index 0d321d7..bd9cd6b 100644
--- a/src/execute.c
+++ b/src/execute.c
@@ -8,9 +8,11 @@
#define UNUSED(x) (void)x
#define DEF(x) \
-static void exec_##x(struct insn i, size_t sp, struct vec *stack, struct vec *globals)
+ static void exec_##x(struct insn i, size_t sp, struct vec *stack, \
+ struct vec *globals)
-static int64_t load(struct loc l, size_t sp, struct vec *stack, struct vec *globals)
+static int64_t load(struct loc l, size_t sp, struct vec *stack,
+ struct vec *globals)
{
if (l.l)
return vect_at(int64_t, *stack, l.o + sp);
@@ -18,7 +20,8 @@ static int64_t load(struct loc l, size_t sp, struct vec *stack, struct vec *glob
return vect_at(int64_t, *globals, l.o);
}
-static void store(struct loc l, int64_t v, size_t sp, struct vec *stack, struct vec *globals)
+static void store(struct loc l, int64_t v, size_t sp, struct vec *stack,
+ struct vec *globals)
{
if (l.l) {
vect_at(int64_t, *stack, l.o + sp) = v;
@@ -155,13 +158,13 @@ DEF(LOAD_WEEKDAY) {
const char *day = "Sunday";
switch (time.tm_wday) {
- case 0: day = "Sunday"; break;
- case 1: day = "Monday"; break;
- case 2: day = "Tuesday"; break;
- case 3: day = "Wednesday"; break;
- case 4: day = "Thursday"; break;
- case 5: day = "Friday"; break;
- case 6: day = "Saturday"; break;
+ case 0: day = "Sunday"; break;
+ case 1: day = "Monday"; break;
+ case 2: day = "Tuesday"; break;
+ case 3: day = "Wednesday"; break;
+ case 4: day = "Thursday"; break;
+ case 5: day = "Friday"; break;
+ case 6: day = "Saturday"; break;
}
put(i.o, (int64_t)day);
@@ -250,7 +253,8 @@ DEF(DATE_DIFF) {
put(i.o, days);
}
-static int64_t exec_func(struct fn *f, struct vec *args, size_t sp, struct vec *stack, struct vec *globals)
+static int64_t exec_func(struct fn *f, struct vec *args, size_t sp,
+ struct vec *stack, struct vec *globals)
{
/* move args to formal locations */
size_t i = 0;
@@ -306,37 +310,38 @@ static int64_t exec_func(struct fn *f, struct vec *args, size_t sp, struct vec *
struct fn *cf = find_fn(i.v);
assert(cf);
- retval = exec_func(cf, args, sp + f->max_sp, stack, globals);
+ retval = exec_func(cf, args, sp + f->max_sp, stack,
+ globals);
break;
}
- DO(MOVE);
- DO(ADD);
- DO(SUB);
- DO(MUL);
- DO(DIV);
- DO(CONST);
- DO(PRINT_DATE);
- DO(PRINT_INT);
- DO(PRINT_BOOL);
- DO(PRINT_STRING);
- DO(PRINT_NEWLINE);
- DO(PRINT_SPACE);
- DO(LOAD_DAY);
- DO(LOAD_MONTH);
- DO(LOAD_YEAR);
- DO(LOAD_WEEKDAY);
- DO(LOAD_WEEKNUM);
- DO(STORE_DAY);
- DO(STORE_MONTH);
- DO(STORE_YEAR);
- DO(DATE_ADD);
- DO(DATE_SUB);
- DO(DATE_DIFF);
- DO(TODAY);
- DO(EQ);
- DO(LT);
- DO(NEG);
+ DO(MOVE);
+ DO(ADD);
+ DO(SUB);
+ DO(MUL);
+ DO(DIV);
+ DO(CONST);
+ DO(PRINT_DATE);
+ DO(PRINT_INT);
+ DO(PRINT_BOOL);
+ DO(PRINT_STRING);
+ DO(PRINT_NEWLINE);
+ DO(PRINT_SPACE);
+ DO(LOAD_DAY);
+ DO(LOAD_MONTH);
+ DO(LOAD_YEAR);
+ DO(LOAD_WEEKDAY);
+ DO(LOAD_WEEKNUM);
+ DO(STORE_DAY);
+ DO(STORE_MONTH);
+ DO(STORE_YEAR);
+ DO(DATE_ADD);
+ DO(DATE_SUB);
+ DO(DATE_DIFF);
+ DO(TODAY);
+ DO(EQ);
+ DO(LT);
+ DO(NEG);
}
#undef DO