164 lines
2.1 KiB
C
164 lines
2.1 KiB
C
#ifndef CRT_H
|
|
#define CRT_H
|
|
|
|
#define tmpy 0x02
|
|
#define tmp 0x03
|
|
|
|
#define ip 0x19
|
|
#define accu 0x1b
|
|
#define addr 0x1f
|
|
#define sp 0x23
|
|
#define fp 0x25
|
|
|
|
#define sregs 0x43
|
|
#define regs 0x53
|
|
|
|
|
|
enum ByteCode
|
|
{
|
|
BC_NOP,
|
|
BC_EXIT,
|
|
|
|
BC_CONST_8,
|
|
BC_CONST_P8,
|
|
BC_CONST_N8,
|
|
BC_CONST_16,
|
|
BC_CONST_32,
|
|
|
|
BC_LOAD_REG_8,
|
|
BC_STORE_REG_8,
|
|
BC_LOAD_REG_16,
|
|
BC_STORE_REG_16,
|
|
BC_ADDR_REG,
|
|
BC_LOAD_REG_32,
|
|
BC_STORE_REG_32,
|
|
|
|
BC_LOAD_ABS_8,
|
|
BC_LOAD_ABS_U8,
|
|
BC_LOAD_ABS_I8,
|
|
BC_LOAD_ABS_16,
|
|
BC_LOAD_ABS_32,
|
|
|
|
BC_STORE_ABS_8,
|
|
BC_STORE_ABS_16,
|
|
BC_STORE_ABS_32,
|
|
|
|
BC_LEA_ABS,
|
|
|
|
BC_LOAD_LOCAL_8,
|
|
BC_LOAD_LOCAL_U8,
|
|
BC_LOAD_LOCAL_I8,
|
|
BC_LOAD_LOCAL_16,
|
|
BC_LOAD_LOCAL_32,
|
|
|
|
BC_STORE_LOCAL_8,
|
|
BC_STORE_LOCAL_16,
|
|
BC_STORE_LOCAL_32,
|
|
|
|
BC_LEA_LOCAL,
|
|
|
|
BC_STORE_FRAME_8,
|
|
BC_STORE_FRAME_16,
|
|
BC_STORE_FRAME_32,
|
|
|
|
BC_LOAD_ADDR_8,
|
|
BC_LOAD_ADDR_U8,
|
|
BC_LOAD_ADDR_I8,
|
|
BC_LOAD_ADDR_16,
|
|
BC_LOAD_ADDR_32,
|
|
|
|
BC_STORE_ADDR_8,
|
|
BC_STORE_ADDR_16,
|
|
BC_STORE_ADDR_32,
|
|
|
|
BC_BINOP_ADDR_16,
|
|
BC_BINOP_SUBR_16,
|
|
BC_BINOP_ANDR_16,
|
|
BC_BINOP_ORR_16,
|
|
BC_BINOP_XORR_16,
|
|
BC_BINOP_MULR_16,
|
|
BC_BINOP_DIVR_U16,
|
|
BC_BINOP_MODR_U16,
|
|
BC_BINOP_DIVR_I16,
|
|
BC_BINOP_MODR_I16,
|
|
BC_BINOP_SHLR_16,
|
|
BC_BINOP_SHRR_U16,
|
|
BC_BINOP_SHRR_I16,
|
|
|
|
BC_BINOP_ADDI_16,
|
|
BC_BINOP_SUBI_16,
|
|
BC_BINOP_ANDI_16,
|
|
BC_BINOP_ORI_16,
|
|
BC_BINOP_MULI8_16,
|
|
|
|
BC_BINOP_SHLI_16,
|
|
BC_BINOP_SHRI_U16,
|
|
BC_BINOP_SHRI_I16,
|
|
|
|
BC_BINOP_CMPUR_16,
|
|
BC_BINOP_CMPSR_16,
|
|
|
|
BC_BINOP_CMPUI_16,
|
|
BC_BINOP_CMPSI_16,
|
|
|
|
BC_OP_NEGATE_16,
|
|
BC_OP_INVERT_16,
|
|
|
|
BC_BINOP_ADD_F32,
|
|
BC_BINOP_SUB_F32,
|
|
BC_BINOP_MUL_F32,
|
|
BC_BINOP_DIV_F32,
|
|
BC_BINOP_CMP_F32,
|
|
BC_OP_NEGATE_F32,
|
|
BC_OP_ABS_F32,
|
|
BC_OP_FLOOR_F32,
|
|
BC_OP_CEIL_F32,
|
|
|
|
BC_CONV_U16_F32,
|
|
BC_CONV_I16_F32,
|
|
BC_CONV_F32_U16,
|
|
BC_CONV_F32_I16,
|
|
|
|
BC_CONV_I8_I16,
|
|
|
|
BC_JUMPS,
|
|
BC_BRANCHS_EQ,
|
|
BC_BRANCHS_NE,
|
|
BC_BRANCHS_GT,
|
|
BC_BRANCHS_GE,
|
|
BC_BRANCHS_LT,
|
|
BC_BRANCHS_LE,
|
|
|
|
BC_JUMPF,
|
|
BC_BRANCHF_EQ,
|
|
BC_BRANCHF_NE,
|
|
BC_BRANCHF_GT,
|
|
BC_BRANCHF_GE,
|
|
BC_BRANCHF_LT,
|
|
BC_BRANCHF_LE,
|
|
|
|
BC_SET_EQ,
|
|
BC_SET_NE,
|
|
BC_SET_GT,
|
|
BC_SET_GE,
|
|
BC_SET_LT,
|
|
BC_SET_LE,
|
|
|
|
BC_ENTER,
|
|
BC_RETURN,
|
|
BC_CALL,
|
|
BC_PUSH_FRAME,
|
|
BC_POP_FRAME,
|
|
|
|
BC_JSR,
|
|
|
|
BC_COPY,
|
|
BC_COPY_LONG,
|
|
|
|
BC_NATIVE = 0x75
|
|
};
|
|
|
|
#pragma compile("crt.c")
|
|
|
|
#endif
|