X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcommon%2Fsymdefs.h;h=bcfabfd6a5bf3a107cced090c5a1a31d163e0ec8;hb=621424788e17b904697513110cde552f1cd1ea16;hp=f4e192bf5f79144120d5de84db357357d97d2dbc;hpb=72e32b332b25bb641c122d4eb9b94239d3577ef1;p=cc65 diff --git a/src/common/symdefs.h b/src/common/symdefs.h index f4e192bf5..bcfabfd6a 100644 --- a/src/common/symdefs.h +++ b/src/common/symdefs.h @@ -49,37 +49,43 @@ /* Import size */ -#define IMP_ABS 0x00 /* Import as normal value */ -#define IMP_ZP 0x01 /* Import as zero page symbol */ -#define IMP_MASK_SIZE 0x01 /* Size mask */ +#define IMP_ABS 0x00 /* Import as normal value */ +#define IMP_ZP 0x01 /* Import as zero page symbol */ +#define IMP_MASK_SIZE 0x01 /* Size mask */ -#define IS_IMP_ABS(x) (((x) & IMP_MASK_SIZE) == IMP_ABS) -#define IS_IMP_ZP(x) (((x) & IMP_MASK_SIZE) == IMP_ZP) +#define IS_IMP_ABS(x) (((x) & IMP_MASK_SIZE) == IMP_ABS) +#define IS_IMP_ZP(x) (((x) & IMP_MASK_SIZE) == IMP_ZP) + +/* Number of module constructor/destructor declarations for an export */ +#define EXP_CONDES_MASK 0x07 + +#define IS_EXP_CONDES(x) (((x) & EXP_CONDES_MASK) != 0) +#define GET_EXP_CONDES_COUNT(x) ((x) & EXP_CONDES_MASK) +#define INC_EXP_CONDES_COUNT(x) ((x)++) /* Export size */ -#define EXP_ABS 0x00 /* Export as normal value */ -#define EXP_ZP 0x20 /* Export as zero page value */ -#define EXP_MASK_SIZE 0x20 /* Size mask */ +#define EXP_ABS 0x00 /* Export as normal value */ +#define EXP_ZP 0x08 /* Export as zero page value */ +#define EXP_MASK_SIZE 0x08 /* Size mask */ -#define IS_EXP_ABS(x) (((x) & EXP_MASK_SIZE) == EXP_ABS) -#define IS_EXP_ZP(x) (((x) & EXP_MASK_SIZE) == EXP_ZP) +#define IS_EXP_ABS(x) (((x) & EXP_MASK_SIZE) == EXP_ABS) +#define IS_EXP_ZP(x) (((x) & EXP_MASK_SIZE) == EXP_ZP) /* Export value type */ -#define EXP_CONST 0x00 /* Mask bit for const values */ -#define EXP_EXPR 0x40 /* Mask bit for expr values */ -#define EXP_MASK_VAL 0x40 /* Value mask */ +#define EXP_CONST 0x00 /* Mask bit for const values */ +#define EXP_EXPR 0x10 /* Mask bit for expr values */ +#define EXP_MASK_VAL 0x10 /* Value mask */ -#define IS_EXP_CONST(x) (((x) & EXP_MASK_VAL) == EXP_CONST) -#define IS_EXP_EXPR(x) (((x) & EXP_MASK_VAL) == EXP_EXPR) +#define IS_EXP_CONST(x) (((x) & EXP_MASK_VAL) == EXP_CONST) +#define IS_EXP_EXPR(x) (((x) & EXP_MASK_VAL) == EXP_EXPR) -/* Export initializer flag */ -#define EXP_INIT_MIN 0x01 /* Minimum value */ -#define EXP_INIT_MAX 0x1F /* Maximum value */ -#define EXP_INIT_DEF 0x18 /* Default value */ -#define EXP_MASK_INIT 0x1F /* Initializer value mask */ +/* Export usage */ +#define EXP_EQUATE 0x00 /* Mask bit for an equate */ +#define EXP_LABEL 0x20 /* Mask bit for a label */ +#define EXP_MASK_LABEL 0x20 /* Value mask */ -#define IS_EXP_INIT(x) (((x) & EXP_MASK_INIT) != 0) -#define GET_EXP_INIT_VAL(x) ((x) & EXP_MASK_INIT) +#define IS_EXP_EQUATE(x) (((x) & EXP_MASK_LABEL) == EXP_EQUATE) +#define IS_EXP_LABEL(x) (((x) & EXP_MASK_LABEL) == EXP_LABEL)