X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fmcs51%2Fralloc.h;h=9d851a8fa99ca614f6aafd00e17ad7c6a03f5eb9;hb=eae1bd2f705a2c61e143c539f8c4d1e9c2b4efe6;hp=fc8d87a9ea562d15400b83a79e06b44d61b90767;hpb=9d2535f231a7a7eb46037b05c05fc8f8a91947aa;p=fw%2Fsdcc diff --git a/src/mcs51/ralloc.h b/src/mcs51/ralloc.h index fc8d87a9..9d851a8f 100644 --- a/src/mcs51/ralloc.h +++ b/src/mcs51/ralloc.h @@ -8,19 +8,19 @@ under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - + In other words, you are welcome to use, share and improve this program. You are forbidden to forbid anyone else to use, share and improve - what you give them. Help stamp out software-hoarding! + what you give them. Help stamp out software-hoarding! -------------------------------------------------------------------------*/ #include "SDCCicode.h" #include "SDCCBBlock.h" @@ -29,29 +29,36 @@ 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 + R2_IDX = 0, R3_IDX, R4_IDX, R5_IDX, + R6_IDX, R7_IDX, R0_IDX, R1_IDX, + B0_IDX, B1_IDX, B2_IDX, B3_IDX, + B4_IDX, B5_IDX, B6_IDX, B7_IDX, + X8_IDX, X9_IDX, X10_IDX, X11_IDX, + X12_IDX, CND_IDX, + DPL_IDX, DPH_IDX, B_IDX, A_IDX, + END_IDX }; #define REG_PTR 0x01 #define REG_GPR 0x02 #define REG_CND 0x04 +#define REG_BIT 0x08 /* definition for the registers */ typedef struct regs { - short type; /* can have value - REG_GPR, REG_PTR or REG_CND */ - short rIdx; /* index into register table */ + short type; /* can have value + REG_GPR, REG_PTR or REG_CND */ + short rIdx; /* index into register table */ short otype; - char *name; /* name */ - char *dname; /* name when direct access needed */ - char *base; /* base address */ - short offset; /* offset from the base */ - unsigned isFree:1; /* is currently unassigned */ + char *name; /* name */ + char *dname; /* name when direct access needed */ + char *base; /* base address */ + short offset; /* offset from the base */ + unsigned isFree:1; /* is currently unassigned */ + unsigned valueKnown:1; /* from rtrack.c */ + unsigned char value; /* from rtrack.c only valid when valueKnown is set */ + } regs; extern regs regs8051[]; @@ -59,5 +66,9 @@ extern regs regs8051[]; regs *mcs51_regWithIdx (int); bitVect *mcs51_rUmaskForOp (operand * op); +bitVect *mcs51_allBitregs (void); + +extern int mcs51_ptrRegReq; +extern int mcs51_nRegs; #endif