From ba5f6d97c680b8e40f86f4b6f1bd371c9147e110 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Sun, 2 Jan 2022 19:02:48 +0900 Subject: [PATCH] [gamecode] Remove the right_associative field It has been useless pretty much since I switched to using bison for the parser. --- include/QF/pr_comp.h | 1 - libs/gamecode/pr_opcode.c | 585 +++++++++++++++++++------------------- 2 files changed, 293 insertions(+), 293 deletions(-) diff --git a/include/QF/pr_comp.h b/include/QF/pr_comp.h index 1303fb2c5..971584070 100644 --- a/include/QF/pr_comp.h +++ b/include/QF/pr_comp.h @@ -427,7 +427,6 @@ typedef enum { typedef struct opcode_s { const char *name; const char *opname; - qboolean right_associative; etype_t type_a, type_b, type_c; unsigned int min_version; const char *fmt; diff --git a/libs/gamecode/pr_opcode.c b/libs/gamecode/pr_opcode.c index 62239c561..955cc0796 100644 --- a/libs/gamecode/pr_opcode.c +++ b/libs/gamecode/pr_opcode.c @@ -96,1412 +96,1413 @@ VISIBLE const char * const pr_type_name[ev_type_count] = { // x place holder for P (padding) // 0-7 parameter index (for P) VISIBLE const opcode_t pr_opcodes[] = { - [OP_DONE] = {"", "done", false, // OP_DONE is actually the same as - ev_entity, ev_field, ev_void, // OP_RETURN, the types are bogus + // OP_DONE is actually the same as OP_RETURN, the types are bogus + [OP_DONE] = {"", "done", + ev_entity, ev_field, ev_void, PROG_ID_VERSION, "%Va", }, - [OP_MUL_D] = {"*", "mul.d", false, + [OP_MUL_D] = {"*", "mul.d", ev_double, ev_double, ev_double, PROG_VERSION, }, - [OP_MUL_F] = {"*", "mul.f", false, + [OP_MUL_F] = {"*", "mul.f", ev_float, ev_float, ev_float, PROG_ID_VERSION, }, - [OP_MUL_V] = {"*", "mul.v", false, + [OP_MUL_V] = {"*", "mul.v", ev_vector, ev_vector, ev_float, PROG_ID_VERSION, }, - [OP_MUL_FV] = {"*", "mul.fv", false, + [OP_MUL_FV] = {"*", "mul.fv", ev_float, ev_vector, ev_vector, PROG_ID_VERSION, }, - [OP_MUL_VF] = {"*", "mul.vf", false, + [OP_MUL_VF] = {"*", "mul.vf", ev_vector, ev_float, ev_vector, PROG_ID_VERSION, }, - [OP_MUL_DV] = {"*", "mul.dv", false, + [OP_MUL_DV] = {"*", "mul.dv", ev_double, ev_vector, ev_vector, PROG_ID_VERSION, }, - [OP_MUL_VD] = {"*", "mul.vd", false, + [OP_MUL_VD] = {"*", "mul.vd", ev_vector, ev_double, ev_vector, PROG_ID_VERSION, }, - [OP_MUL_Q] = {"*", "mul.q", false, + [OP_MUL_Q] = {"*", "mul.q", ev_quat, ev_quat, ev_quat, PROG_VERSION, }, - [OP_MUL_FQ] = {"*", "mul.fq", false, + [OP_MUL_FQ] = {"*", "mul.fq", ev_float, ev_quat, ev_quat, PROG_VERSION, }, - [OP_MUL_QF] = {"*", "mul.qf", false, + [OP_MUL_QF] = {"*", "mul.qf", ev_quat, ev_float, ev_quat, PROG_VERSION, }, - [OP_MUL_DQ] = {"*", "mul.dq", false, + [OP_MUL_DQ] = {"*", "mul.dq", ev_double, ev_quat, ev_quat, PROG_VERSION, }, - [OP_MUL_QD] = {"*", "mul.qd", false, + [OP_MUL_QD] = {"*", "mul.qd", ev_quat, ev_double, ev_quat, PROG_VERSION, }, - [OP_MUL_QV] = {"*", "mul.qv", false, + [OP_MUL_QV] = {"*", "mul.qv", ev_quat, ev_vector, ev_vector, PROG_VERSION, }, - [OP_CONJ_Q] = {"~", "conj.q", false, + [OP_CONJ_Q] = {"~", "conj.q", ev_quat, ev_invalid, ev_quat, PROG_VERSION, "%Ga, %gc", }, - [OP_DIV_F] = {"/", "div.f", false, + [OP_DIV_F] = {"/", "div.f", ev_float, ev_float, ev_float, PROG_ID_VERSION, }, - [OP_DIV_D] = {"/", "div.d", false, + [OP_DIV_D] = {"/", "div.d", ev_double, ev_double, ev_double, PROG_VERSION, }, - [OP_REM_D] = {"%", "rem.d", false, + [OP_REM_D] = {"%", "rem.d", ev_double, ev_double, ev_double, PROG_VERSION, }, - [OP_MOD_D] = {"%%", "mod.d", false, + [OP_MOD_D] = {"%%", "mod.d", ev_double, ev_double, ev_double, PROG_VERSION, }, - [OP_ADD_D] = {"+", "add.d", false, + [OP_ADD_D] = {"+", "add.d", ev_double, ev_double, ev_double, PROG_VERSION, }, - [OP_ADD_F] = {"+", "add.f", false, + [OP_ADD_F] = {"+", "add.f", ev_float, ev_float, ev_float, PROG_ID_VERSION, }, - [OP_ADD_V] = {"+", "add.v", false, + [OP_ADD_V] = {"+", "add.v", ev_vector, ev_vector, ev_vector, PROG_ID_VERSION, }, - [OP_ADD_Q] = {"+", "add.q", false, + [OP_ADD_Q] = {"+", "add.q", ev_quat, ev_quat, ev_quat, PROG_VERSION, }, - [OP_ADD_S] = {"+", "add.s", false, + [OP_ADD_S] = {"+", "add.s", ev_string, ev_string, ev_string, PROG_VERSION, }, - [OP_SUB_D] = {"-", "sub.d", false, + [OP_SUB_D] = {"-", "sub.d", ev_double, ev_double, ev_double, PROG_VERSION, }, - [OP_SUB_F] = {"-", "sub.f", false, + [OP_SUB_F] = {"-", "sub.f", ev_float, ev_float, ev_float, PROG_ID_VERSION, }, - [OP_SUB_V] = {"-", "sub.v", false, + [OP_SUB_V] = {"-", "sub.v", ev_vector, ev_vector, ev_vector, PROG_ID_VERSION, }, - [OP_SUB_Q] = {"-", "sub.q", false, + [OP_SUB_Q] = {"-", "sub.q", ev_quat, ev_quat, ev_quat, PROG_VERSION, }, - [OP_EQ_D] = {"==", "eq.d", false, + [OP_EQ_D] = {"==", "eq.d", ev_double, ev_double, ev_integer, PROG_VERSION, }, - [OP_EQ_F] = {"==", "eq.f", false, + [OP_EQ_F] = {"==", "eq.f", ev_float, ev_float, ev_integer, PROG_ID_VERSION, }, - [OP_EQ_V] = {"==", "eq.v", false, + [OP_EQ_V] = {"==", "eq.v", ev_vector, ev_vector, ev_integer, PROG_ID_VERSION, }, - [OP_EQ_Q] = {"==", "eq.q", false, + [OP_EQ_Q] = {"==", "eq.q", ev_quat, ev_quat, ev_integer, PROG_VERSION, }, - [OP_EQ_S] = {"==", "eq.s", false, + [OP_EQ_S] = {"==", "eq.s", ev_string, ev_string, ev_integer, PROG_ID_VERSION, }, - [OP_EQ_E] = {"==", "eq.e", false, + [OP_EQ_E] = {"==", "eq.e", ev_entity, ev_entity, ev_integer, PROG_ID_VERSION, }, - [OP_EQ_FN] = {"==", "eq.fn", false, + [OP_EQ_FN] = {"==", "eq.fn", ev_func, ev_func, ev_integer, PROG_ID_VERSION, }, - [OP_NE_D] = {"!=", "ne.d", false, + [OP_NE_D] = {"!=", "ne.d", ev_double, ev_double, ev_integer, PROG_VERSION, }, - [OP_NE_F] = {"!=", "ne.f", false, + [OP_NE_F] = {"!=", "ne.f", ev_float, ev_float, ev_integer, PROG_ID_VERSION, }, - [OP_NE_V] = {"!=", "ne.v", false, + [OP_NE_V] = {"!=", "ne.v", ev_vector, ev_vector, ev_integer, PROG_ID_VERSION, }, - [OP_NE_Q] = {"!=", "ne.q", false, + [OP_NE_Q] = {"!=", "ne.q", ev_quat, ev_quat, ev_integer, PROG_VERSION, }, - [OP_NE_S] = {"!=", "ne.s", false, + [OP_NE_S] = {"!=", "ne.s", ev_string, ev_string, ev_integer, PROG_ID_VERSION, }, - [OP_NE_E] = {"!=", "ne.e", false, + [OP_NE_E] = {"!=", "ne.e", ev_entity, ev_entity, ev_integer, PROG_ID_VERSION, }, - [OP_NE_FN] = {"!=", "ne.fn", false, + [OP_NE_FN] = {"!=", "ne.fn", ev_func, ev_func, ev_integer, PROG_ID_VERSION, }, - [OP_LE_D] = {"<=", "le.d", false, + [OP_LE_D] = {"<=", "le.d", ev_double, ev_double, ev_integer, PROG_VERSION, }, - [OP_LE_F] = {"<=", "le.f", false, + [OP_LE_F] = {"<=", "le.f", ev_float, ev_float, ev_integer, PROG_ID_VERSION, }, - [OP_GE_D] = {">=", "ge.d", false, + [OP_GE_D] = {">=", "ge.d", ev_double, ev_double, ev_integer, PROG_VERSION, }, - [OP_GE_F] = {">=", "ge.f", false, + [OP_GE_F] = {">=", "ge.f", ev_float, ev_float, ev_integer, PROG_ID_VERSION, }, - [OP_LE_S] = {"<=", "le.s", false, + [OP_LE_S] = {"<=", "le.s", ev_string, ev_string, ev_integer, PROG_VERSION, }, - [OP_GE_S] = {">=", "ge.s", false, + [OP_GE_S] = {">=", "ge.s", ev_string, ev_string, ev_integer, PROG_VERSION, }, - [OP_LT_D] = {"<", "lt.d", false, + [OP_LT_D] = {"<", "lt.d", ev_double, ev_double, ev_integer, PROG_VERSION, }, - [OP_LT_F] = {"<", "lt.f", false, + [OP_LT_F] = {"<", "lt.f", ev_float, ev_float, ev_integer, PROG_ID_VERSION, }, - [OP_GT_D] = {">", "gt.d", false, + [OP_GT_D] = {">", "gt.d", ev_double, ev_double, ev_integer, PROG_VERSION, }, - [OP_GT_F] = {">", "gt.f", false, + [OP_GT_F] = {">", "gt.f", ev_float, ev_float, ev_integer, PROG_ID_VERSION, }, - [OP_LT_S] = {"<", "lt.s", false, + [OP_LT_S] = {"<", "lt.s", ev_string, ev_string, ev_integer, PROG_VERSION, }, - [OP_GT_S] = {">", "gt.s", false, + [OP_GT_S] = {">", "gt.s", ev_string, ev_string, ev_integer, PROG_VERSION, }, - [OP_LOAD_F] = {".", "load.f", false, + [OP_LOAD_F] = {".", "load.f", ev_entity, ev_field, ev_float, PROG_ID_VERSION, "%Ga.%Gb(%Ec), %gc",//FIXME %E more flexible? }, - [OP_LOAD_D] = {".", "load.d", false, + [OP_LOAD_D] = {".", "load.d", ev_entity, ev_field, ev_double, PROG_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_LOAD_V] = {".", "load.v", false, + [OP_LOAD_V] = {".", "load.v", ev_entity, ev_field, ev_vector, PROG_ID_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_LOAD_Q] = {".", "load.q", false, + [OP_LOAD_Q] = {".", "load.q", ev_entity, ev_field, ev_quat, PROG_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_LOAD_S] = {".", "load.s", false, + [OP_LOAD_S] = {".", "load.s", ev_entity, ev_field, ev_string, PROG_ID_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_LOAD_ENT] = {".", "load.ent", false, + [OP_LOAD_ENT] = {".", "load.ent", ev_entity, ev_field, ev_entity, PROG_ID_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_LOAD_FLD] = {".", "load.fld", false, + [OP_LOAD_FLD] = {".", "load.fld", ev_entity, ev_field, ev_field, PROG_ID_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_LOAD_FN] = {".", "load.fn", false, + [OP_LOAD_FN] = {".", "load.fn", ev_entity, ev_field, ev_func, PROG_ID_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_LOAD_I] = {".", "load.i", false, + [OP_LOAD_I] = {".", "load.i", ev_entity, ev_field, ev_integer, PROG_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_LOAD_P] = {".", "load.p", false, + [OP_LOAD_P] = {".", "load.p", ev_entity, ev_field, ev_pointer, PROG_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_LOADB_D] = {".", "loadb.d", false, + [OP_LOADB_D] = {".", "loadb.d", ev_pointer, ev_integer, ev_double, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADB_F] = {".", "loadb.f", false, + [OP_LOADB_F] = {".", "loadb.f", ev_pointer, ev_integer, ev_float, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADB_V] = {".", "loadb.v", false, + [OP_LOADB_V] = {".", "loadb.v", ev_pointer, ev_integer, ev_vector, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADB_Q] = {".", "loadb.q", false, + [OP_LOADB_Q] = {".", "loadb.q", ev_pointer, ev_integer, ev_quat, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADB_S] = {".", "loadb.s", false, + [OP_LOADB_S] = {".", "loadb.s", ev_pointer, ev_integer, ev_string, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADB_ENT] = {".", "loadb.ent", false, + [OP_LOADB_ENT] = {".", "loadb.ent", ev_pointer, ev_integer, ev_entity, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADB_FLD] = {".", "loadb.fld", false, + [OP_LOADB_FLD] = {".", "loadb.fld", ev_pointer, ev_integer, ev_field, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADB_FN] = {".", "loadb.fn", false, + [OP_LOADB_FN] = {".", "loadb.fn", ev_pointer, ev_integer, ev_func, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADB_I] = {".", "loadb.i", false, + [OP_LOADB_I] = {".", "loadb.i", ev_pointer, ev_integer, ev_integer, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADB_P] = {".", "loadb.p", false, + [OP_LOADB_P] = {".", "loadb.p", ev_pointer, ev_integer, ev_pointer, PROG_VERSION, "*(%Ga + %Gb), %gc", }, - [OP_LOADBI_D] = {".", "loadbi.d", false, + [OP_LOADBI_D] = {".", "loadbi.d", ev_pointer, ev_short, ev_double, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_LOADBI_F] = {".", "loadbi.f", false, + [OP_LOADBI_F] = {".", "loadbi.f", ev_pointer, ev_short, ev_float, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_LOADBI_V] = {".", "loadbi.v", false, + [OP_LOADBI_V] = {".", "loadbi.v", ev_pointer, ev_short, ev_vector, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_LOADBI_Q] = {".", "loadbi.q", false, + [OP_LOADBI_Q] = {".", "loadbi.q", ev_pointer, ev_short, ev_quat, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_LOADBI_S] = {".", "loadbi.s", false, + [OP_LOADBI_S] = {".", "loadbi.s", ev_pointer, ev_short, ev_string, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_LOADBI_ENT] = {".", "loadbi.ent", false, + [OP_LOADBI_ENT] = {".", "loadbi.ent", ev_pointer, ev_short, ev_entity, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_LOADBI_FLD] = {".", "loadbi.fld", false, + [OP_LOADBI_FLD] = {".", "loadbi.fld", ev_pointer, ev_short, ev_field, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_LOADBI_FN] = {".", "loadbi.fn", false, + [OP_LOADBI_FN] = {".", "loadbi.fn", ev_pointer, ev_short, ev_func, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_LOADBI_I] = {".", "loadbi.i", false, + [OP_LOADBI_I] = {".", "loadbi.i", ev_pointer, ev_short, ev_integer, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_LOADBI_P] = {".", "loadbi.p", false, + [OP_LOADBI_P] = {".", "loadbi.p", ev_pointer, ev_short, ev_pointer, PROG_VERSION, "*(%Ga + %sb), %gc", }, - [OP_ADDRESS] = {"&", "address", false, + [OP_ADDRESS] = {"&", "address", ev_entity, ev_field, ev_pointer, PROG_ID_VERSION, "%Ga.%Gb(%Ec), %gc", }, - [OP_ADDRESS_VOID] = {"&", "address", false, + [OP_ADDRESS_VOID] = {"&", "address", ev_void, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_D] = {"&", "address.d", false, + [OP_ADDRESS_D] = {"&", "address.d", ev_double, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_F] = {"&", "address.f", false, + [OP_ADDRESS_F] = {"&", "address.f", ev_float, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_V] = {"&", "address.v", false, + [OP_ADDRESS_V] = {"&", "address.v", ev_vector, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_Q] = {"&", "address.q", false, + [OP_ADDRESS_Q] = {"&", "address.q", ev_quat, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_S] = {"&", "address.s", false, + [OP_ADDRESS_S] = {"&", "address.s", ev_string, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_ENT] = {"&", "address.ent", false, + [OP_ADDRESS_ENT] = {"&", "address.ent", ev_entity, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_FLD] = {"&", "address.fld", false, + [OP_ADDRESS_FLD] = {"&", "address.fld", ev_field, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_FN] = {"&", "address.fn", false, + [OP_ADDRESS_FN] = {"&", "address.fn", ev_func, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_I] = {"&", "address.i", false, + [OP_ADDRESS_I] = {"&", "address.i", ev_integer, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_ADDRESS_P] = {"&", "address.p", false, + [OP_ADDRESS_P] = {"&", "address.p", ev_pointer, ev_invalid, ev_pointer, PROG_VERSION, "%Ga, %gc", }, - [OP_LEA] = {"&", "lea", false, + [OP_LEA] = {"&", "lea", ev_pointer, ev_integer, ev_pointer, PROG_VERSION, "(%Ga + %Gb), %gc", }, - [OP_LEAI] = {"&", "leai", false, + [OP_LEAI] = {"&", "leai", ev_pointer, ev_short, ev_pointer, PROG_VERSION, "(%Ga + %sb), %gc", }, - [OP_CONV_IF] = {"", "conv.if", false, + [OP_CONV_IF] = {"", "conv.if", ev_integer, ev_invalid, ev_float, PROG_VERSION, "%Ga, %gc", }, - [OP_CONV_FI] = {"", "conv.fi", false, + [OP_CONV_FI] = {"", "conv.fi", ev_float, ev_invalid, ev_integer, PROG_VERSION, "%Ga, %gc", }, - [OP_CONV_ID] = {"", "conv.id", false, + [OP_CONV_ID] = {"", "conv.id", ev_integer, ev_invalid, ev_double, PROG_VERSION, "%Ga, %gc", }, - [OP_CONV_DI] = {"", "conv.di", false, + [OP_CONV_DI] = {"", "conv.di", ev_double, ev_invalid, ev_integer, PROG_VERSION, "%Ga, %gc", }, - [OP_CONV_FD] = {"", "conv.fd", false, + [OP_CONV_FD] = {"", "conv.fd", ev_float, ev_invalid, ev_double, PROG_VERSION, "%Ga, %gc", }, - [OP_CONV_DF] = {"", "conv.df", false, + [OP_CONV_DF] = {"", "conv.df", ev_double, ev_invalid, ev_float, PROG_VERSION, "%Ga, %gc", }, - [OP_STORE_D] = {"=", "store.d", true, + [OP_STORE_D] = {"=", "store.d", ev_double, ev_double, ev_invalid, PROG_VERSION, "%Ga, %gb", }, - [OP_STORE_F] = {"=", "store.f", true, + [OP_STORE_F] = {"=", "store.f", ev_float, ev_float, ev_invalid, PROG_ID_VERSION, "%Ga, %gb", }, - [OP_STORE_V] = {"=", "store.v", true, + [OP_STORE_V] = {"=", "store.v", ev_vector, ev_vector, ev_invalid, PROG_ID_VERSION, "%Ga, %gb", }, - [OP_STORE_Q] = {"=", "store.q", true, + [OP_STORE_Q] = {"=", "store.q", ev_quat, ev_quat, ev_invalid, PROG_VERSION, "%Ga, %gb", }, - [OP_STORE_S] = {"=", "store.s", true, + [OP_STORE_S] = {"=", "store.s", ev_string, ev_string, ev_invalid, PROG_ID_VERSION, "%Ga, %gb", }, - [OP_STORE_ENT] = {"=", "store.ent", true, + [OP_STORE_ENT] = {"=", "store.ent", ev_entity, ev_entity, ev_invalid, PROG_ID_VERSION, "%Ga, %gb", }, - [OP_STORE_FLD] = {"=", "store.fld", true, + [OP_STORE_FLD] = {"=", "store.fld", ev_field, ev_field, ev_invalid, PROG_ID_VERSION, "%Ga, %gb", }, - [OP_STORE_FN] = {"=", "store.fn", true, + [OP_STORE_FN] = {"=", "store.fn", ev_func, ev_func, ev_invalid, PROG_ID_VERSION, "%Ga, %gb", }, - [OP_STORE_I] = {"=", "store.i", true, + [OP_STORE_I] = {"=", "store.i", ev_integer, ev_integer, ev_invalid, PROG_VERSION, "%Ga, %gb", }, - [OP_STORE_P] = {"=", "store.p", true, + [OP_STORE_P] = {"=", "store.p", ev_pointer, ev_pointer, ev_invalid, PROG_VERSION, "%Ga, %gb", }, - [OP_STOREP_D] = {".=", "storep.d", true, + [OP_STOREP_D] = {".=", "storep.d", ev_double, ev_pointer, ev_invalid, PROG_ID_VERSION, "%Ga, *%Gb", }, - [OP_STOREP_F] = {".=", "storep.f", true, + [OP_STOREP_F] = {".=", "storep.f", ev_float, ev_pointer, ev_invalid, PROG_ID_VERSION, "%Ga, *%Gb", }, - [OP_STOREP_V] = {".=", "storep.v", true, + [OP_STOREP_V] = {".=", "storep.v", ev_vector, ev_pointer, ev_invalid, PROG_ID_VERSION, "%Ga, *%Gb", }, - [OP_STOREP_Q] = {".=", "storep.q", true, + [OP_STOREP_Q] = {".=", "storep.q", ev_quat, ev_pointer, ev_invalid, PROG_VERSION, "%Ga, *%Gb", }, - [OP_STOREP_S] = {".=", "storep.s", true, + [OP_STOREP_S] = {".=", "storep.s", ev_string, ev_pointer, ev_invalid, PROG_ID_VERSION, "%Ga, *%Gb", }, - [OP_STOREP_ENT] = {".=", "storep.ent", true, + [OP_STOREP_ENT] = {".=", "storep.ent", ev_entity, ev_pointer, ev_invalid, PROG_ID_VERSION, "%Ga, *%Gb", }, - [OP_STOREP_FLD] = {".=", "storep.fld", true, + [OP_STOREP_FLD] = {".=", "storep.fld", ev_field, ev_pointer, ev_invalid, PROG_ID_VERSION, "%Ga, *%Gb", }, - [OP_STOREP_FN] = {".=", "storep.fn", true, + [OP_STOREP_FN] = {".=", "storep.fn", ev_func, ev_pointer, ev_invalid, PROG_ID_VERSION, "%Ga, *%Gb", }, - [OP_STOREP_I] = {".=", "storep.i", true, + [OP_STOREP_I] = {".=", "storep.i", ev_integer, ev_pointer, ev_invalid, PROG_VERSION, "%Ga, *%Gb", }, - [OP_STOREP_P] = {".=", "storep.p", true, + [OP_STOREP_P] = {".=", "storep.p", ev_pointer, ev_pointer, ev_invalid, PROG_VERSION, "%Ga, *%Gb", }, - [OP_STOREB_D] = {".=", "storeb.d", true, + [OP_STOREB_D] = {".=", "storeb.d", ev_double, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREB_F] = {".=", "storeb.f", true, + [OP_STOREB_F] = {".=", "storeb.f", ev_float, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREB_V] = {".=", "storeb.v", true, + [OP_STOREB_V] = {".=", "storeb.v", ev_vector, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREB_Q] = {".=", "storeb.q", true, + [OP_STOREB_Q] = {".=", "storeb.q", ev_quat, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREB_S] = {".=", "storeb.s", true, + [OP_STOREB_S] = {".=", "storeb.s", ev_string, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREB_ENT] = {".=", "storeb.ent", true, + [OP_STOREB_ENT] = {".=", "storeb.ent", ev_entity, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREB_FLD] = {".=", "storeb.fld", true, + [OP_STOREB_FLD] = {".=", "storeb.fld", ev_field, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREB_FN] = {".=", "storeb.fn", true, + [OP_STOREB_FN] = {".=", "storeb.fn", ev_func, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREB_I] = {".=", "storeb.i", true, + [OP_STOREB_I] = {".=", "storeb.i", ev_integer, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREB_P] = {".=", "storeb.p", true, + [OP_STOREB_P] = {".=", "storeb.p", ev_pointer, ev_pointer, ev_integer, PROG_VERSION, "%Ga, *(%Gb + %Gc)", }, - [OP_STOREBI_D] = {".=", "storebi.d", true, + [OP_STOREBI_D] = {".=", "storebi.d", ev_double, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_STOREBI_F] = {".=", "storebi.f", true, + [OP_STOREBI_F] = {".=", "storebi.f", ev_float, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_STOREBI_V] = {".=", "storebi.v", true, + [OP_STOREBI_V] = {".=", "storebi.v", ev_vector, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_STOREBI_Q] = {".=", "storebi.q", true, + [OP_STOREBI_Q] = {".=", "storebi.q", ev_quat, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_STOREBI_S] = {".=", "storebi.s", true, + [OP_STOREBI_S] = {".=", "storebi.s", ev_string, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_STOREBI_ENT] = {".=", "storebi.ent", true, + [OP_STOREBI_ENT] = {".=", "storebi.ent", ev_entity, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_STOREBI_FLD] = {".=", "storebi.fld", true, + [OP_STOREBI_FLD] = {".=", "storebi.fld", ev_field, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_STOREBI_FN] = {".=", "storebi.fn", true, + [OP_STOREBI_FN] = {".=", "storebi.fn", ev_func, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_STOREBI_I] = {".=", "storebi.i", true, + [OP_STOREBI_I] = {".=", "storebi.i", ev_integer, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_STOREBI_P] = {".=", "storebi.p", true, + [OP_STOREBI_P] = {".=", "storebi.p", ev_pointer, ev_pointer, ev_short, PROG_VERSION, "%Ga, *(%Gb + %sc)", }, - [OP_RETURN] = {"", "return", false, + [OP_RETURN] = {"", "return", ev_void, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Ra", }, - [OP_RETURN_V] = {"", "return", false, + [OP_RETURN_V] = {"", "return", ev_invalid, ev_invalid, ev_invalid, PROG_VERSION, "", }, - [OP_NOT_D] = {"!", "not.d", false, + [OP_NOT_D] = {"!", "not.d", ev_double, ev_invalid, ev_integer, PROG_VERSION, "%Ga, %gc", }, - [OP_NOT_F] = {"!", "not.f", false, + [OP_NOT_F] = {"!", "not.f", ev_float, ev_invalid, ev_integer, PROG_ID_VERSION, "%Ga, %gc", }, - [OP_NOT_V] = {"!", "not.v", false, + [OP_NOT_V] = {"!", "not.v", ev_vector, ev_invalid, ev_integer, PROG_ID_VERSION, "%Ga, %gc", }, - [OP_NOT_Q] = {"!", "not.q", false, + [OP_NOT_Q] = {"!", "not.q", ev_quat, ev_invalid, ev_integer, PROG_VERSION, "%Ga, %gc", }, - [OP_NOT_S] = {"!", "not.s", false, + [OP_NOT_S] = {"!", "not.s", ev_string, ev_invalid, ev_integer, PROG_ID_VERSION, "%Ga, %gc", }, - [OP_NOT_ENT] = {"!", "not.ent", false, + [OP_NOT_ENT] = {"!", "not.ent", ev_entity, ev_invalid, ev_integer, PROG_ID_VERSION, "%Ga, %gc", }, - [OP_NOT_FN] = {"!", "not.fn", false, + [OP_NOT_FN] = {"!", "not.fn", ev_func, ev_invalid, ev_integer, PROG_ID_VERSION, "%Ga, %gc", }, - [OP_NOT_P] = {"!", "not.p", false, + [OP_NOT_P] = {"!", "not.p", ev_pointer, ev_invalid, ev_integer, PROG_VERSION, "%Ga, %gc", }, - [OP_IF] = {"", "if", false, + [OP_IF] = {"", "if", ev_integer, ev_short, ev_invalid, PROG_ID_VERSION, "%Ga branch %sb (%Ob)", }, - [OP_IFNOT] = {"", "ifnot", false, + [OP_IFNOT] = {"", "ifnot", ev_integer, ev_short, ev_invalid, PROG_ID_VERSION, "%Ga branch %sb (%Ob)", }, - [OP_IFBE] = {"", "ifbe", true, + [OP_IFBE] = {"", "ifbe", ev_integer, ev_short, ev_invalid, PROG_VERSION, "%Ga branch %sb (%Ob)", }, - [OP_IFB] = {"", "ifb", true, + [OP_IFB] = {"", "ifb", ev_integer, ev_short, ev_invalid, PROG_VERSION, "%Ga branch %sb (%Ob)", }, - [OP_IFAE] = {"", "ifae", true, + [OP_IFAE] = {"", "ifae", ev_integer, ev_short, ev_invalid, PROG_VERSION, "%Ga branch %sb (%Ob)", }, - [OP_IFA] = {"", "ifa", true, + [OP_IFA] = {"", "ifa", ev_integer, ev_short, ev_invalid, PROG_VERSION, "%Ga branch %sb (%Ob)", }, // calls returns REG_RETURN - [OP_CALL0] = {"", "call0", false, + [OP_CALL0] = {"", "call0", ev_func, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Fa ()", }, - [OP_CALL1] = {"", "call1", false, + [OP_CALL1] = {"", "call1", ev_func, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Fa (%P0x)", }, - [OP_CALL2] = {"", "call2", false, + [OP_CALL2] = {"", "call2", ev_func, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Fa (%P0x, %P1x)", }, - [OP_CALL3] = {"", "call3", false, + [OP_CALL3] = {"", "call3", ev_func, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Fa (%P0x, %P1x, %P2x)", }, - [OP_CALL4] = {"", "call4", false, + [OP_CALL4] = {"", "call4", ev_func, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Fa (%P0x, %P1x, %P2x, %P3x)", }, - [OP_CALL5] = {"", "call5", false, + [OP_CALL5] = {"", "call5", ev_func, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Fa (%P0x, %P1x, %P2x, %P3x, %P4x)", }, - [OP_CALL6] = {"", "call6", false, + [OP_CALL6] = {"", "call6", ev_func, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Fa (%P0x, %P1x, %P2x, %P3x, %P4x, %P5x)", }, - [OP_CALL7] = {"", "call7", false, + [OP_CALL7] = {"", "call7", ev_func, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Fa (%P0x, %P1x, %P2x, %P3x, %P4x, %P5x, %P6x)", }, - [OP_CALL8] = {"", "call8", false, + [OP_CALL8] = {"", "call8", ev_func, ev_invalid, ev_invalid, PROG_ID_VERSION, "%Fa (%P0x, %P1x, %P2x, %P3x, %P4x, %P5x, %P6x, %P7x)", }, - [OP_RCALL0] = {"", 0, false, + [OP_RCALL0] = {"", 0, ev_invalid, ev_invalid, ev_invalid, ~0, // not a valid instruction 0, }, - [OP_RCALL1] = {"", "rcall1", false, + [OP_RCALL1] = {"", "rcall1", ev_func, ev_void, ev_invalid, PROG_VERSION, "%Fa (%P0b)", }, - [OP_RCALL2] = {"", "rcall2", false, + [OP_RCALL2] = {"", "rcall2", ev_func, ev_void, ev_void, PROG_VERSION, "%Fa (%P0b, %P1c)", }, - [OP_RCALL3] = {"", "rcall3", false, + [OP_RCALL3] = {"", "rcall3", ev_func, ev_void, ev_void, PROG_VERSION, "%Fa (%P0b, %P1c, %P2x)", }, - [OP_RCALL4] = {"", "rcall4", false, + [OP_RCALL4] = {"", "rcall4", ev_func, ev_void, ev_void, PROG_VERSION, "%Fa (%P0b, %P1c, %P2x, %P3x)", }, - [OP_RCALL5] = {"", "rcall5", false, + [OP_RCALL5] = {"", "rcall5", ev_func, ev_void, ev_void, PROG_VERSION, "%Fa (%P0b, %P1c, %P2x, %P3x, %P4x)", }, - [OP_RCALL6] = {"", "rcall6", false, + [OP_RCALL6] = {"", "rcall6", ev_func, ev_void, ev_void, PROG_VERSION, "%Fa (%P0b, %P1c, %P2x, %P3x, %P4x, %P5x)", }, - [OP_RCALL7] = {"", "rcall7", false, + [OP_RCALL7] = {"", "rcall7", ev_func, ev_void, ev_void, PROG_VERSION, "%Fa (%P0b, %P1c, %P2x, %P3x, %P4x, %P5x, %P6x)", }, - [OP_RCALL8] = {"", "rcall8", false, + [OP_RCALL8] = {"", "rcall8", ev_func, ev_void, ev_void, PROG_VERSION, "%Fa (%P0b, %P1c, %P2x, %P3x, %P4x, %P5x, %P6x, %P7x)", }, - [OP_STATE] = {"", "state", false, + [OP_STATE] = {"", "state", ev_float, ev_func, ev_invalid, PROG_ID_VERSION, "%Ga, %Gb", }, - [OP_STATE_F] = {"", "state.f", false, + [OP_STATE_F] = {"", "state.f", ev_float, ev_func, ev_float, PROG_VERSION, "%Ga, %Gb, %Gc", }, - [OP_GOTO] = {"", "goto", false, + [OP_GOTO] = {"", "goto", ev_short, ev_invalid, ev_invalid, PROG_ID_VERSION, "branch %sa (%Oa)", }, - [OP_JUMP] = {"", "jump", false, + [OP_JUMP] = {"", "jump", ev_integer, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_JUMPB] = {"", "jumpb", false, + [OP_JUMPB] = {"", "jumpb", ev_void, ev_integer, ev_invalid, PROG_VERSION, "%Ga[%Gb]", }, - [OP_AND] = {"&&", "and.f", false, + [OP_AND] = {"&&", "and.f", ev_float, ev_float, ev_integer, PROG_ID_VERSION, }, - [OP_OR] = {"||", "or.f", false, + [OP_OR] = {"||", "or.f", ev_float, ev_float, ev_integer, PROG_ID_VERSION, }, - [OP_SHL_F] = {"<<", "shl.f", false, + [OP_SHL_F] = {"<<", "shl.f", ev_float, ev_float, ev_float, PROG_VERSION, }, - [OP_SHR_F] = {">>", "shr.f", false, + [OP_SHR_F] = {">>", "shr.f", ev_float, ev_float, ev_float, PROG_VERSION, }, - [OP_SHL_I] = {"<<", "shl.i", false, + [OP_SHL_I] = {"<<", "shl.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_SHR_I] = {">>", "shr.i", false, + [OP_SHR_I] = {">>", "shr.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_SHR_U] = {">>", "shr.u", false, + [OP_SHR_U] = {">>", "shr.u", ev_uinteger, ev_integer, ev_uinteger, PROG_VERSION, }, - [OP_BITAND] = {"&", "bitand", false, + [OP_BITAND] = {"&", "bitand", ev_float, ev_float, ev_float, PROG_ID_VERSION, }, - [OP_BITOR] = {"|", "bitor", false, + [OP_BITOR] = {"|", "bitor", ev_float, ev_float, ev_float, PROG_ID_VERSION, }, - [OP_ADD_I] = {"+", "add.i", false, + [OP_ADD_I] = {"+", "add.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_SUB_I] = {"-", "sub.i", false, + [OP_SUB_I] = {"-", "sub.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_MUL_I] = {"*", "mul.i", false, + [OP_MUL_I] = {"*", "mul.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_DIV_I] = {"/", "div.i", false, + [OP_DIV_I] = {"/", "div.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_REM_I] = {"%", "rem.i", false, + [OP_REM_I] = {"%", "rem.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_MOD_I] = {"%%", "mod.i", false, + [OP_MOD_I] = {"%%", "mod.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_BITAND_I] = {"&", "bitand.i", false, + [OP_BITAND_I] = {"&", "bitand.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_BITOR_I] = {"|", "bitor.i", false, + [OP_BITOR_I] = {"|", "bitor.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_REM_F] = {"%", "rem.f", false, + [OP_REM_F] = {"%", "rem.f", ev_float, ev_float, ev_float, PROG_VERSION, }, - [OP_MOD_F] = {"%%", "mod.f", false, + [OP_MOD_F] = {"%%", "mod.f", ev_float, ev_float, ev_float, PROG_VERSION, }, - [OP_GE_I] = {">=", "ge.i", false, + [OP_GE_I] = {">=", "ge.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_LE_I] = {"<=", "le.i", false, + [OP_LE_I] = {"<=", "le.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_GT_I] = {">", "gt.i", false, + [OP_GT_I] = {">", "gt.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_LT_I] = {"<", "lt.i", false, + [OP_LT_I] = {"<", "lt.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_AND_I] = {"&&", "and.i", false, + [OP_AND_I] = {"&&", "and.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_OR_I] = {"||", "or.i", false, + [OP_OR_I] = {"||", "or.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_NOT_I] = {"!", "not.i", false, + [OP_NOT_I] = {"!", "not.i", ev_integer, ev_invalid, ev_integer, PROG_VERSION, "%Ga, %gc", }, - [OP_EQ_I] = {"==", "eq.i", false, + [OP_EQ_I] = {"==", "eq.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_NE_I] = {"!=", "ne.i", false, + [OP_NE_I] = {"!=", "ne.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_GE_U] = {">=", "ge.u", false, + [OP_GE_U] = {">=", "ge.u", ev_uinteger, ev_uinteger, ev_integer, PROG_VERSION, }, - [OP_LE_U] = {"<=", "le.u", false, + [OP_LE_U] = {"<=", "le.u", ev_uinteger, ev_uinteger, ev_integer, PROG_VERSION, }, - [OP_GT_U] = {">", "gt.u", false, + [OP_GT_U] = {">", "gt.u", ev_uinteger, ev_uinteger, ev_integer, PROG_VERSION, }, - [OP_LT_U] = {"<", "lt.u", false, + [OP_LT_U] = {"<", "lt.u", ev_uinteger, ev_uinteger, ev_integer, PROG_VERSION, }, - [OP_BITXOR_F] = {"^", "bitxor.f", false, + [OP_BITXOR_F] = {"^", "bitxor.f", ev_float, ev_float, ev_float, PROG_VERSION, }, - [OP_BITNOT_F] = {"~", "bitnot.f", false, + [OP_BITNOT_F] = {"~", "bitnot.f", ev_float, ev_invalid, ev_float, PROG_VERSION, "%Ga, %gc", }, - [OP_BITXOR_I] = {"^", "bitxor.i", false, + [OP_BITXOR_I] = {"^", "bitxor.i", ev_integer, ev_integer, ev_integer, PROG_VERSION, }, - [OP_BITNOT_I] = {"~", "bitnot.i", false, + [OP_BITNOT_I] = {"~", "bitnot.i", ev_integer, ev_invalid, ev_integer, PROG_VERSION, "%Ga, %gc", }, - [OP_GE_P] = {">=", "ge.p", false, + [OP_GE_P] = {">=", "ge.p", ev_pointer, ev_pointer, ev_integer, PROG_VERSION, }, - [OP_LE_P] = {"<=", "le.p", false, + [OP_LE_P] = {"<=", "le.p", ev_pointer, ev_pointer, ev_integer, PROG_VERSION, }, - [OP_GT_P] = {">", "gt.p", false, + [OP_GT_P] = {">", "gt.p", ev_pointer, ev_pointer, ev_integer, PROG_VERSION, }, - [OP_LT_P] = {"<", "lt.p", false, + [OP_LT_P] = {"<", "lt.p", ev_pointer, ev_pointer, ev_integer, PROG_VERSION, }, - [OP_EQ_P] = {"==", "eq.p", false, + [OP_EQ_P] = {"==", "eq.p", ev_pointer, ev_pointer, ev_integer, PROG_VERSION, }, - [OP_NE_P] = {"!=", "ne.p", false, + [OP_NE_P] = {"!=", "ne.p", ev_pointer, ev_pointer, ev_integer, PROG_VERSION, }, - [OP_MOVEI] = {"", "movei", true, + [OP_MOVEI] = {"", "movei", ev_void, ev_short, ev_void, PROG_VERSION, "%Ga, %sb, %gc", }, - [OP_MOVEP] = {"", "movep", true, + [OP_MOVEP] = {"", "movep", ev_pointer, ev_integer, ev_pointer, PROG_VERSION, "%Ga, %Gb, %Gc", }, - [OP_MOVEPI] = {"", "movepi", true, + [OP_MOVEPI] = {"", "movepi", ev_pointer, ev_short, ev_pointer, PROG_VERSION, "%Ga, %sb, %Gc", }, - [OP_MEMSETI] = {"", "memseti", true, + [OP_MEMSETI] = {"", "memseti", ev_integer, ev_short, ev_void, PROG_VERSION, "%Ga, %sb, %gc", }, - [OP_MEMSETP] = {"", "memsetp", true, + [OP_MEMSETP] = {"", "memsetp", ev_integer, ev_integer, ev_pointer, PROG_VERSION, "%Ga, %Gb, %Gc", }, - [OP_MEMSETPI] = {"", "memsetpi", true, + [OP_MEMSETPI] = {"", "memsetpi", ev_integer, ev_short, ev_pointer, PROG_VERSION, "%Ga, %sb, %Gc", }, - [OP_PUSH_S] = {"", "push.s", false, + [OP_PUSH_S] = {"", "push.s", ev_string, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSH_F] = {"", "push.f", false, + [OP_PUSH_F] = {"", "push.f", ev_float, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSH_V] = {"", "push.v", false, + [OP_PUSH_V] = {"", "push.v", ev_vector, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSH_ENT] = {"", "push.ent", false, + [OP_PUSH_ENT] = {"", "push.ent", ev_entity, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSH_FLD] = {"", "push.fld", false, + [OP_PUSH_FLD] = {"", "push.fld", ev_field, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSH_FN] = {"", "push.fn", false, + [OP_PUSH_FN] = {"", "push.fn", ev_func, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSH_P] = {"", "push.p", false, + [OP_PUSH_P] = {"", "push.p", ev_pointer, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSH_Q] = {"", "push.q", false, + [OP_PUSH_Q] = {"", "push.q", ev_quat, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSH_I] = {"", "push.i", false, + [OP_PUSH_I] = {"", "push.i", ev_integer, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSH_D] = {"", "push.d", false, + [OP_PUSH_D] = {"", "push.d", ev_double, ev_invalid, ev_invalid, PROG_VERSION, "%Ga", }, - [OP_PUSHB_S] = {"", "pushb.s", false, + [OP_PUSHB_S] = {"", "pushb.s", ev_pointer, ev_integer, ev_string, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHB_F] = {"", "pushb.f", false, + [OP_PUSHB_F] = {"", "pushb.f", ev_pointer, ev_integer, ev_float, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHB_V] = {"", "pushb.v", false, + [OP_PUSHB_V] = {"", "pushb.v", ev_pointer, ev_integer, ev_vector, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHB_ENT] = {"", "pushb.ent", false, + [OP_PUSHB_ENT] = {"", "pushb.ent", ev_pointer, ev_integer, ev_entity, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHB_FLD] = {"", "pushb.fld", false, + [OP_PUSHB_FLD] = {"", "pushb.fld", ev_pointer, ev_integer, ev_field, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHB_FN] = {"", "pushb.fn", false, + [OP_PUSHB_FN] = {"", "pushb.fn", ev_pointer, ev_integer, ev_func, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHB_P] = {"", "pushb.p", false, + [OP_PUSHB_P] = {"", "pushb.p", ev_pointer, ev_integer, ev_pointer, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHB_Q] = {"", "pushb.q", false, + [OP_PUSHB_Q] = {"", "pushb.q", ev_pointer, ev_integer, ev_quat, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHB_I] = {"", "pushb.i", false, + [OP_PUSHB_I] = {"", "pushb.i", ev_pointer, ev_integer, ev_integer, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHB_D] = {"", "pushb.d", false, + [OP_PUSHB_D] = {"", "pushb.d", ev_pointer, ev_integer, ev_double, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_PUSHBI_S] = {"", "pushbi.s", false, + [OP_PUSHBI_S] = {"", "pushbi.s", ev_pointer, ev_short, ev_string, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_PUSHBI_F] = {"", "pushbi.f", false, + [OP_PUSHBI_F] = {"", "pushbi.f", ev_pointer, ev_short, ev_float, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_PUSHBI_V] = {"", "pushbi.v", false, + [OP_PUSHBI_V] = {"", "pushbi.v", ev_pointer, ev_short, ev_vector, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_PUSHBI_ENT] = {"", "pushbi.ent", false, + [OP_PUSHBI_ENT] = {"", "pushbi.ent", ev_pointer, ev_short, ev_entity, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_PUSHBI_FLD] = {"", "pushbi.fld", false, + [OP_PUSHBI_FLD] = {"", "pushbi.fld", ev_pointer, ev_short, ev_field, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_PUSHBI_FN] = {"", "pushbi.fn", false, + [OP_PUSHBI_FN] = {"", "pushbi.fn", ev_pointer, ev_short, ev_func, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_PUSHBI_P] = {"", "pushbi.p", false, + [OP_PUSHBI_P] = {"", "pushbi.p", ev_pointer, ev_short, ev_pointer, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_PUSHBI_Q] = {"", "pushbi.q", false, + [OP_PUSHBI_Q] = {"", "pushbi.q", ev_pointer, ev_short, ev_quat, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_PUSHBI_I] = {"", "pushbi.i", false, + [OP_PUSHBI_I] = {"", "pushbi.i", ev_pointer, ev_short, ev_integer, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_PUSHBI_D] = {"", "pushbi.d", false, + [OP_PUSHBI_D] = {"", "pushbi.d", ev_pointer, ev_short, ev_double, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POP_S] = {"", "pop.s", false, + [OP_POP_S] = {"", "pop.s", ev_string, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POP_F] = {"", "pop.f", false, + [OP_POP_F] = {"", "pop.f", ev_float, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POP_V] = {"", "pop.v", false, + [OP_POP_V] = {"", "pop.v", ev_vector, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POP_ENT] = {"", "pop.ent", false, + [OP_POP_ENT] = {"", "pop.ent", ev_entity, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POP_FLD] = {"", "pop.fld", false, + [OP_POP_FLD] = {"", "pop.fld", ev_field, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POP_FN] = {"", "pop.fn", false, + [OP_POP_FN] = {"", "pop.fn", ev_func, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POP_P] = {"", "pop.p", false, + [OP_POP_P] = {"", "pop.p", ev_pointer, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POP_Q] = {"", "pop.q", false, + [OP_POP_Q] = {"", "pop.q", ev_quat, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POP_I] = {"", "pop.i", false, + [OP_POP_I] = {"", "pop.i", ev_integer, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POP_D] = {"", "pop.d", false, + [OP_POP_D] = {"", "pop.d", ev_double, ev_invalid, ev_invalid, PROG_VERSION, "%ga", }, - [OP_POPB_S] = {"", "popb.s", false, + [OP_POPB_S] = {"", "popb.s", ev_pointer, ev_integer, ev_string, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPB_F] = {"", "popb.f", false, + [OP_POPB_F] = {"", "popb.f", ev_pointer, ev_integer, ev_float, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPB_V] = {"", "popb.v", false, + [OP_POPB_V] = {"", "popb.v", ev_pointer, ev_integer, ev_vector, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPB_ENT] = {"", "popb.ent", false, + [OP_POPB_ENT] = {"", "popb.ent", ev_pointer, ev_integer, ev_entity, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPB_FLD] = {"", "popb.fld", false, + [OP_POPB_FLD] = {"", "popb.fld", ev_pointer, ev_integer, ev_field, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPB_FN] = {"", "popb.fn", false, + [OP_POPB_FN] = {"", "popb.fn", ev_pointer, ev_integer, ev_func, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPB_P] = {"", "popb.p", false, + [OP_POPB_P] = {"", "popb.p", ev_pointer, ev_integer, ev_pointer, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPB_Q] = {"", "popb.q", false, + [OP_POPB_Q] = {"", "popb.q", ev_pointer, ev_integer, ev_quat, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPB_I] = {"", "popb.i", false, + [OP_POPB_I] = {"", "popb.i", ev_pointer, ev_integer, ev_integer, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPB_D] = {"", "popb.d", false, + [OP_POPB_D] = {"", "popb.d", ev_pointer, ev_integer, ev_double, PROG_VERSION, "*(%Ga + %Gb)", }, - [OP_POPBI_S] = {"", "popbi.s", false, + [OP_POPBI_S] = {"", "popbi.s", ev_pointer, ev_short, ev_string, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POPBI_F] = {"", "popbi.f", false, + [OP_POPBI_F] = {"", "popbi.f", ev_pointer, ev_short, ev_float, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POPBI_V] = {"", "popbi.v", false, + [OP_POPBI_V] = {"", "popbi.v", ev_pointer, ev_short, ev_vector, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POPBI_ENT] = {"", "popbi.ent", false, + [OP_POPBI_ENT] = {"", "popbi.ent", ev_pointer, ev_short, ev_entity, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POPBI_FLD] = {"", "popbi.fld", false, + [OP_POPBI_FLD] = {"", "popbi.fld", ev_pointer, ev_short, ev_field, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POPBI_FN] = {"", "popbi.fn", false, + [OP_POPBI_FN] = {"", "popbi.fn", ev_pointer, ev_short, ev_func, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POPBI_P] = {"", "popbi.p", false, + [OP_POPBI_P] = {"", "popbi.p", ev_pointer, ev_short, ev_pointer, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POPBI_Q] = {"", "popbi.q", false, + [OP_POPBI_Q] = {"", "popbi.q", ev_pointer, ev_short, ev_quat, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POPBI_I] = {"", "popbi.i", false, + [OP_POPBI_I] = {"", "popbi.i", ev_pointer, ev_short, ev_integer, PROG_VERSION, "*(%Ga + %sb)", }, - [OP_POPBI_D] = {"", "popbi.d", false, + [OP_POPBI_D] = {"", "popbi.d", ev_pointer, ev_short, ev_double, PROG_VERSION, "*(%Ga + %sb)",