Clean up calling.

This commit is contained in:
Brad Nelson
2021-01-04 22:24:11 -08:00
parent 21c39ec6e6
commit cdb4c663dd

View File

@ -1,30 +1,18 @@
#ifndef CALLTYPE
# define CALLTYPE
#endif
typedef CALLTYPE cell_t (*call_t)();
#define CALLING_OPCODE_LIST \
X("CALL0", OP_CALL0, tos = ((CALLTYPE cell_t (*)()) tos) \
()) \
X("CALL1", OP_CALL1, tos = ((CALLTYPE cell_t (*)()) tos) \
(*sp); --sp) \
X("CALL2", OP_CALL2, tos = ((CALLTYPE cell_t (*)()) tos) \
(sp[-1], *sp); sp -= 2) \
X("CALL3", OP_CALL3, tos = ((CALLTYPE cell_t (*)()) tos) \
(sp[-2], sp[-1], *sp); sp -= 3) \
X("CALL4", OP_CALL4, tos = ((CALLTYPE cell_t (*)()) tos) \
(sp[-3], sp[-2], sp[-1], *sp); sp -= 4) \
X("CALL5", OP_CALL5, tos = ((CALLTYPE cell_t (*)()) tos) \
(sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 5) \
X("CALL6", OP_CALL6, tos = ((CALLTYPE cell_t (*)()) tos) \
(sp[-5], sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 6) \
X("CALL7", OP_CALL7, tos = ((CALLTYPE cell_t (*)()) tos) \
(sp[-6], sp[-5], sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 7) \
X("CALL8", OP_CALL8, tos = ((CALLTYPE cell_t (*)()) tos) \
(sp[-7], sp[-6], sp[-5], sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 8) \
X("CALL9", OP_CALL9, tos = ((CALLTYPE cell_t (*)()) tos) \
(sp[-8], sp[-7], sp[-6], sp[-5], sp[-4], sp[-3], sp[-2], \
sp[-1], *sp); sp -= 9) \
X("CALL10", OP_CALL10, tos = ((CALLTYPE cell_t (*)()) tos) \
(sp[-9], sp[-8], sp[-7], sp[-6], sp[-5], sp[-4], sp[-3], \
sp[-2], sp[-1], *sp); sp -= 10) \
X("CALL0", OP_CALL0, tos = ((call_t) tos)()) \
X("CALL1", OP_CALL1, tos = ((call_t) tos)(*sp); --sp) \
X("CALL2", OP_CALL2, tos = ((call_t) tos)(sp[-1], *sp); sp -= 2) \
X("CALL3", OP_CALL3, tos = ((call_t) tos)(sp[-2], sp[-1], *sp); sp -= 3) \
X("CALL4", OP_CALL4, tos = ((call_t) tos)(sp[-3], sp[-2], sp[-1], *sp); sp -= 4) \
X("CALL5", OP_CALL5, tos = ((call_t) tos)(sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 5) \
X("CALL6", OP_CALL6, tos = ((call_t) tos)(sp[-5], sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 6) \
X("CALL7", OP_CALL7, tos = ((call_t) tos)(sp[-6], sp[-5], sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 7) \
X("CALL8", OP_CALL8, tos = ((call_t) tos)(sp[-7], sp[-6], sp[-5], sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 8) \
X("CALL9", OP_CALL9, tos = ((call_t) tos)(sp[-8], sp[-7], sp[-6], sp[-5], sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 9) \
X("CALL10", OP_CALL10, tos = ((call_t) tos) (sp[-9], sp[-8], sp[-7], sp[-6], sp[-5], sp[-4], sp[-3], sp[-2], sp[-1], *sp); sp -= 10) \