diff --git a/ueforth/common/calling.h b/ueforth/common/calling.h new file mode 100644 index 0000000..3c06d0f --- /dev/null +++ b/ueforth/common/calling.h @@ -0,0 +1,32 @@ +#define SET tos = (cell_t) + +#define n0 tos +#define n1 (*sp) +#define n2 sp[-1] +#define n3 sp[-2] +#define n4 sp[-3] +#define n5 sp[-4] +#define n6 sp[-5] +#define n7 sp[-6] +#define n8 sp[-7] +#define n9 sp[-8] +#define n10 sp[-9] + +#define a0 ((void *) tos) +#define a1 (*(void **) &n1) +#define a2 (*(void **) &n2) +#define a3 (*(void **) &n3) +#define a4 (*(void **) &n4) + +#define b0 ((uint8_t *) tos) +#define b1 (*(uint8_t **) &n1) +#define b2 (*(uint8_t **) &n2) +#define b3 (*(uint8_t **) &n3) +#define b4 (*(uint8_t **) &n4) + +#define c0 ((char *) tos) +#define c1 (*(char **) &n1) +#define c2 (*(char **) &n2) +#define c3 (*(char **) &n3) +#define c4 (*(char **) &n4) +