X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fmcs51%2Fralloc.h;h=9d851a8fa99ca614f6aafd00e17ad7c6a03f5eb9;hb=90d3640cdd575040ccb9bcf1e73f031027dc7f60;hp=978ccfc572a6d571ed2f2fd40830490179098d93;hpb=07cbddd43b4358d9f193bdccc860d7563e2aab93;p=fw%2Fsdcc diff --git a/src/mcs51/ralloc.h b/src/mcs51/ralloc.h index 978ccfc5..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,10 +29,11 @@ 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, + 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 @@ -42,18 +43,22 @@ enum #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[]; @@ -61,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