[nucl] add all opcodes to the dictionary

This commit is contained in:
Daniel Kochmański 2025-06-03 22:39:44 +02:00
parent ae20397968
commit 4880d93a6d

View file

@ -909,12 +909,110 @@ ecl_def_function(_nucl_word_tt, nucl_word_test, static, const);
#define make_dict_entry(name,value) \
ecl_cast_ptr(cl_object, &ecl_constexpr_symbol(ecl_stp_special, name, value))
#define make_code_entry(name,code) \
make_dict_entry(name, ecl_make_fixnum(code))
static const cl_object _nucl_sym_def = make_dict_entry(":", ECL_UNBOUND);
static const cl_object _nucl_sym_fed = make_dict_entry(";", ECL_UNBOUND);
static cl_object nucl_dictionary_default_entries[] = {
_nucl_sym_def,
_nucl_sym_fed,
/* opcodes */
make_code_entry("NOP", OP_NOP),
make_code_entry("QUOTE", OP_QUOTE),
make_code_entry("CALLW", OP_CALLW),
make_code_entry("ENDP", OP_ENDP),
make_code_entry("CONS", OP_CONS),
make_code_entry("CAR", OP_CAR),
make_code_entry("CDR", OP_CDR),
make_code_entry("LIST", OP_LIST),
make_code_entry("LISTA", OP_LISTA),
make_code_entry("CONS_CAR", OP_CONS_CAR),
make_code_entry("CONS_CDR", OP_CONS_CDR),
make_code_entry("INT", OP_INT),
make_code_entry("PINT", OP_PINT),
make_code_entry("VAR", OP_VAR),
make_code_entry("VARC", OP_VARC),
make_code_entry("VARS", OP_VARS),
make_code_entry("PUSH", OP_PUSH),
make_code_entry("PUSHV", OP_PUSHV),
make_code_entry("PUSHVC", OP_PUSHVC),
make_code_entry("PUSHVS", OP_PUSHVS),
make_code_entry("PUSHQ", OP_PUSHQ),
make_code_entry("CALLG1", OP_CALLG1),
make_code_entry("CALLG2", OP_CALLG2),
make_code_entry("CALL", OP_CALL),
make_code_entry("CALLG", OP_CALLG),
make_code_entry("FCALL", OP_FCALL),
make_code_entry("MCALL", OP_MCALL),
make_code_entry("POP", OP_POP),
make_code_entry("POP1", OP_POP1),
make_code_entry("POPREQ", OP_POPREQ),
make_code_entry("POPOPT", OP_POPOPT),
make_code_entry("NOMORE", OP_NOMORE),
make_code_entry("POPREST", OP_POPREST),
make_code_entry("PUSHKEYS", OP_PUSHKEYS),
make_code_entry("EXIT", OP_EXIT),
make_code_entry("FLET", OP_FLET),
make_code_entry("LABELS", OP_LABELS),
make_code_entry("LFUNCTION", OP_LFUNCTION),
make_code_entry("CFUNCTION", OP_CFUNCTION),
make_code_entry("FUNCTION", OP_FUNCTION),
make_code_entry("CLOSE", OP_CLOSE),
make_code_entry("GO", OP_GO),
make_code_entry("GO_CFB", OP_GO_CFB),
make_code_entry("RETURN", OP_RETURN),
make_code_entry("RETURN_CFB", OP_RETURN_CFB),
make_code_entry("THROW", OP_THROW),
make_code_entry("JMP", OP_JMP),
make_code_entry("JNIL", OP_JNIL),
make_code_entry("JT", OP_JT),
make_code_entry("JEQL", OP_JEQL),
make_code_entry("JNEQL", OP_JNEQL),
make_code_entry("UNBIND", OP_UNBIND),
make_code_entry("UNBINDS", OP_UNBINDS),
make_code_entry("BIND", OP_BIND),
make_code_entry("PBIND", OP_PBIND),
make_code_entry("VBIND", OP_VBIND),
make_code_entry("BINDS", OP_BINDS),
make_code_entry("PBINDS", OP_PBINDS),
make_code_entry("VBINDS", OP_VBINDS),
make_code_entry("SETQ", OP_SETQ),
make_code_entry("SETQC", OP_SETQC),
make_code_entry("SETQS", OP_SETQS),
make_code_entry("PSETQ", OP_PSETQ),
make_code_entry("PSETQC", OP_PSETQC),
make_code_entry("PSETQS", OP_PSETQS),
make_code_entry("VSETQ", OP_VSETQ),
make_code_entry("VSETQC", OP_VSETQC),
make_code_entry("VSETQS", OP_VSETQS),
make_code_entry("BLOCK", OP_BLOCK),
make_code_entry("DO", OP_DO),
make_code_entry("CATCH", OP_CATCH),
make_code_entry("FRAME", OP_FRAME),
make_code_entry("TAGBODY", OP_TAGBODY),
make_code_entry("EXIT_TAGBODY", OP_EXIT_TAGBODY),
make_code_entry("EXIT_FRAME", OP_EXIT_FRAME),
make_code_entry("PROTECT", OP_PROTECT),
make_code_entry("PROTECT_NORMAL", OP_PROTECT_NORMAL),
make_code_entry("PROTECT_EXIT", OP_PROTECT_EXIT),
make_code_entry("PROGV", OP_PROGV),
make_code_entry("EXIT_PROGV", OP_EXIT_PROGV),
make_code_entry("PUSHVALUES", OP_PUSHVALUES),
make_code_entry("POPVALUES", OP_POPVALUES),
make_code_entry("PUSHMOREVALUES", OP_PUSHMOREVALUES),
make_code_entry("VALUES", OP_VALUES),
make_code_entry("VALUEREG0", OP_VALUEREG0),
make_code_entry("NTHVAL", OP_NTHVAL),
make_code_entry("NIL", OP_NIL),
make_code_entry("NOT", OP_NOT),
make_code_entry("PUSHNIL", OP_PUSHNIL),
make_code_entry("CSET", OP_CSET),
make_code_entry("STEPIN", OP_STEPIN),
make_code_entry("STEPCALL", OP_STEPCALL),
make_code_entry("STEPOUT", OP_STEPOUT),
/* indirect words */
make_dict_entry(".D", _nucl_word_pd),
make_dict_entry(".S", _nucl_word_ps),
make_dict_entry(".", _nucl_word_dp),