X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcommon%2Fsymdefs.h;h=bcfabfd6a5bf3a107cced090c5a1a31d163e0ec8;hb=621424788e17b904697513110cde552f1cd1ea16;hp=ede76d63ede0ecd32717610a37a0efde3f5e2757;hpb=e5c029e538acf46bfd559b72cdc6b9561fa6232b;p=cc65 diff --git a/src/common/symdefs.h b/src/common/symdefs.h index ede76d63e..bcfabfd6a 100644 --- a/src/common/symdefs.h +++ b/src/common/symdefs.h @@ -49,34 +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 0x01 /* Export as zero page value */ -#define EXP_MASK_SIZE 0x01 /* 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 0x02 /* Mask bit for expr values */ -#define EXP_MASK_VAL 0x02 /* 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 0x04 /* Mask bit for initializer export */ -#define EXP_MASK_INIT 0x04 /* 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) & EXP_MASK_INIT) == EXP_INIT) +#define IS_EXP_EQUATE(x) (((x) & EXP_MASK_LABEL) == EXP_EQUATE) +#define IS_EXP_LABEL(x) (((x) & EXP_MASK_LABEL) == EXP_LABEL)