You are forbidden to forbid anyone else to use, share and improve
what you give them. Help stamp out software-hoarding!
-------------------------------------------------------------------------*/
-#include "SDCCicode.h"
-#include "SDCCBBlock.h"
+
#ifndef SDCCRALLOC_H
#define SDCCRALLOC_H 1
+#include "common.h"
+
#include "pcoderegs.h"
-enum
-{
- R2_IDX = 0, R3_IDX, R4_IDX,
- R5_IDX, R6_IDX, R7_IDX,
- R0_IDX, R1_IDX, X8_IDX,
- X9_IDX, X10_IDX, X11_IDX,
- X12_IDX, CND_IDX
-};
-
enum {
REG_PTR=1,
REG_GPR,
REG_STK,
REG_TMP
};
-//#define REG_PTR 0x01
-//#define REG_GPR 0x02
-//#define REG_CND 0x04
-//#define REG_SFR 0x08
-//#define REG_STK 0x10 /* Use a register as a psuedo stack */
-//#define REG_TMP 0x20
/* definition for the registers */
typedef struct regs
}
regs;
extern regs regspic14[];
-extern int pic14_nRegs;
extern int Gstack_base_addr;
/*
extern set *dynInternalRegs;
+void initStack(int base_address, int size, int shared);
regs *pic14_regWithIdx (int);
regs *dirregWithName (char *name );
-void pic14_freeAllRegs ();
-void pic14_deallocateAllRegs ();
+void pic14_assignRegisters (ebbIndex *ebbi);
regs *pic14_findFreeReg(short type);
regs *pic14_allocWithIdx (int idx);
regs *typeRegWithIdx (int idx, int type, int fixed);
regs *regFindWithName (const char *name);
+void pic14_debugLogClose(void);
+void writeUsedRegs(FILE *of);
+
regs *allocDirReg (operand *op );
+regs *allocInternalRegister(int rIdx, char * name, PIC_OPTYPE po_type, int alias);
+regs *allocProcessorRegister(int rIdx, char * name, short po_type, int alias);
regs *allocRegByName (char *name, int size );
regs *allocNewDirReg (sym_link *symlnk,const char *name);
#define IDX_SSAVE 0x7ffd
#define IDX_PSAVE 0x7ffc
+#define pic14_nRegs 128
+
#endif