port->genXINIT=0;
}
- if (options.model == MODEL_LARGE) {
+ switch (options.model)
+ {
+ case MODEL_SMALL:
+ port->mem.default_local_map = data;
+ port->mem.default_globl_map = data;
+ port->s.gptr_size = 3;
+ break;
+ case MODEL_MEDIUM:
+ port->mem.default_local_map = pdata;
+ port->mem.default_globl_map = pdata;
+ port->s.gptr_size = 3;
+ break;
+ case MODEL_LARGE:
port->mem.default_local_map = xdata;
port->mem.default_globl_map = xdata;
- }
- else
- {
+ port->s.gptr_size = 3;
+ break;
+ default:
port->mem.default_local_map = data;
port->mem.default_globl_map = data;
+ break;
}
if (options.parms_in_bank1) {
if (op == RRC
|| op == RLC
|| op == GETHBIT
+ || op == GETABIT
+ || op == GETBYTE
+ || op == GETWORD
|| (op == SWAP && size <= 2)
)
return TRUE;
asmLineNode *aln = newAsmLineNode();
char *op, op1[256], op2[256];
int opsize;
- const unsigned char *p;
+ const char *p;
char inst[8];
mcs51opcodedata *opdat;
{
glue,
TRUE, /* Emit glue around main */
- MODEL_SMALL | MODEL_LARGE,
+ MODEL_SMALL | MODEL_MEDIUM | MODEL_LARGE,
MODEL_SMALL
},
{
/* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
1, 2, 2, 4, 1, 2, 3, 1, 4, 4
},
+ /* tags for generic pointers */
+ { 0x00, 0x40, 0x60, 0x80 }, /* far, near, xstack, code */
{
"XSTK (PAG,XDATA)", // xstack_name
"STACK (DATA)", // istack_name