X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Fcodeinfo.h;h=55a2e9c18da1cb6675846a626ee887cff49b89b7;hb=465d208b2b4ba80f41c6b7cfa673951a0218f61a;hp=b4df0dd0321ba7c1a66ea4119918d70acf6c46ab;hpb=f4fbbc3dccb1353242a6ab69d6c5aa92e71f6673;p=cc65 diff --git a/src/cc65/codeinfo.h b/src/cc65/codeinfo.h index b4df0dd03..55a2e9c18 100644 --- a/src/cc65/codeinfo.h +++ b/src/cc65/codeinfo.h @@ -60,32 +60,46 @@ struct CodeSeg; #define REG_X 0x0002U #define REG_Y 0x0004U #define REG_TMP1 0x0008U -#define REG_TMP2 0x0010U -#define REG_TMP3 0x0020U -#define REG_TMP4 0x0040U -#define REG_PTR1 0x0080U -#define REG_PTR2 0x0100U -#define REG_PTR3 0x0200U -#define REG_PTR4 0x0400U -#define REG_SREG_LO 0x0800U -#define REG_SREG_HI 0x1000U -#define REG_SP 0x2000U -#define REG_SAVE 0x4000U -#define REG_BANK 0x8000U +#define REG_PTR1_LO 0x0010U +#define REG_PTR1_HI 0x0020U +#define REG_PTR2_LO 0x0040U +#define REG_PTR2_HI 0x0080U +#define REG_SREG_LO 0x0100U +#define REG_SREG_HI 0x0200U +#define REG_SAVE_LO 0x0400U +#define REG_SAVE_HI 0x0800U +#define REG_SP_LO 0x1000U +#define REG_SP_HI 0x2000U + /* Combined register defines */ +#define REG_PTR1 (REG_PTR1_LO | REG_PTR1_HI) +#define REG_PTR2 (REG_PTR2_LO | REG_PTR2_HI) #define REG_SREG (REG_SREG_LO | REG_SREG_HI) +#define REG_SAVE (REG_SAVE_LO | REG_SAVE_HI) +#define REG_SP (REG_SP_LO | REG_SP_HI) #define REG_AX (REG_A | REG_X) #define REG_AY (REG_A | REG_Y) #define REG_XY (REG_X | REG_Y) #define REG_AXY (REG_AX | REG_Y) #define REG_EAX (REG_AX | REG_SREG) #define REG_EAXY (REG_EAX | REG_Y) -#define REG_ZP 0xFFF0U +#define REG_ZP 0xFFF8U #define REG_ALL 0xFFFFU +/* Zero page register info */ +typedef struct ZPInfo ZPInfo; +struct ZPInfo { + unsigned char Len; /* Length of the following string */ + char Name[11]; /* Name of zero page symbol */ + unsigned short ByteUse; /* Register info for this symbol */ + unsigned short WordUse; /* Register info for 16 bit access */ +}; + + + /*****************************************************************************/ /* Code */ /*****************************************************************************/ @@ -98,10 +112,9 @@ void GetFuncInfo (const char* Name, unsigned short* Use, unsigned short* Chg); * load all registers. */ -int IsZPName (const char* Name, unsigned short* RegInfo); -/* Return true if the given name is a zero page symbol. If the RegInfo - * pointer is not NULL, it is filled with the register info for the - * zero page location found. +const ZPInfo* GetZPInfo (const char* Name); +/* If the given name is a zero page symbol, return a pointer to the info + * struct for this symbol, otherwise return NULL. */ unsigned GetRegInfo (struct CodeSeg* S, unsigned Index, unsigned Wanted); @@ -118,6 +131,9 @@ int RegXUsed (struct CodeSeg* S, unsigned Index); int RegYUsed (struct CodeSeg* S, unsigned Index); /* Check if the value in Y is used. */ +int RegAXUsed (struct CodeSeg* S, unsigned Index); +/* Check if the value in A or(!) the value in X are used. */ + /* End of codeinfo.h */