* as/hc08/Makefile.bcc, as/hc08/Makefile.in, as/hc08/as_hc08.dsp,
[fw/sdcc] / as / mcs51 / i51adr.c
index 62ef33dc5fbe4a0090ea178a30c3d83f15f2c612..3657d3c4980b689cdb5f6643dca1c6342d28dafc 100644 (file)
 
 extern int admode (struct adsym *);
 
-struct adsym reg51[] = {       /* R0 thru R7 registers */
-{      "R0",   R0},
-{      "R1",   R1},
-{      "R2",   R2},
-{      "R3",   R3},
-{      "R4",   R4},
-{      "R5",   R5},
-{      "R6",   R6},
-{      "R7",   R7},
-{      "A",    A},
-{      "DPTR", DPTR},
-{      "PC",   PC},
-{      "C",    C},
-{      "AB",   AB},
-{      "r0",   R0},
-{      "r1",   R1},
-{      "r2",   R2},
-{      "r3",   R3},
-{      "r4",   R4},
-{      "r5",   R5},
-{      "r6",   R6},
-{      "r7",   R7},
-{      "a",    A},
-{      "dptr", DPTR},
-{      "pc",   PC},
-{      "c",    C},
-{      "ab",   AB},
-{      "",     0x00}
+struct adsym reg51[] = {        /* R0 thru R7 registers */
+{       "R0",   R0},
+{       "R1",   R1},
+{       "R2",   R2},
+{       "R3",   R3},
+{       "R4",   R4},
+{       "R5",   R5},
+{       "R6",   R6},
+{       "R7",   R7},
+{       "A",    A},
+{       "DPTR", DPTR},
+{       "PC",   PC},
+{       "C",    C},
+{       "AB",   AB},
+{       "r0",   R0},
+{       "r1",   R1},
+{       "r2",   R2},
+{       "r3",   R3},
+{       "r4",   R4},
+{       "r5",   R5},
+{       "r6",   R6},
+{       "r7",   R7},
+{       "a",    A},
+{       "dptr", DPTR},
+{       "pc",   PC},
+{       "c",    C},
+{       "ab",   AB},
+{       "",     0x00}
 };
 
 /*  Classify argument as to address mode */
@@ -54,91 +54,91 @@ int
 addr(esp)
 register struct expr *esp;
 {
-       register int c;
+        register int c;
         register unsigned rd;
 
-       if ((c = getnb()) == '#') {
-               /*  Immediate mode */
-               expr(esp, 0);
-               esp->e_mode = S_IMMED;
-       } 
+        if ((c = getnb()) == '#') {
+                /*  Immediate mode */
+                expr(esp, 0);
+                esp->e_mode = S_IMMED;
+        }
         else if (c == '@') {
-               /* choices are @R0, @R1, @DPTR, @A+PC, @A+DPTR */
-               switch (reg()) {
+                /* choices are @R0, @R1, @DPTR, @A+PC, @A+DPTR */
+                switch (reg()) {
                 case R0:
-                       esp->e_mode = S_AT_R;
-                       esp->e_addr = R0;
+                        esp->e_mode = S_AT_R;
+                        esp->e_addr = R0;
                         break;
                 case R1:
-                       esp->e_mode = S_AT_R;
-                       esp->e_addr = R1;
+                        esp->e_mode = S_AT_R;
+                        esp->e_addr = R1;
                         break;
                 case DPTR:
-                       esp->e_mode = S_AT_DP;
-                       esp->e_addr = DPTR;
+                        esp->e_mode = S_AT_DP;
+                        esp->e_addr = DPTR;
                         break;
                 case A:
-                       if (getnb() == '+') {
-                               rd = reg();
+                        if (getnb() == '+') {
+                                rd = reg();
                                 if (rd == PC) {
-                                       esp->e_mode = S_AT_APC;
-                                       esp->e_addr = 0;
-                               } else if (rd == DPTR) {
-                                       esp->e_mode = S_AT_ADP;
-                                       esp->e_addr = 0;
-                               } else {
-                                       aerr();
+                                        esp->e_mode = S_AT_APC;
+                                        esp->e_addr = 0;
+                                } else if (rd == DPTR) {
+                                        esp->e_mode = S_AT_ADP;
+                                        esp->e_addr = 0;
+                                } else {
+                                        aerr();
                                 }
                         } else
-                               aerr();
+                                aerr();
                         break;
                 }
 
-               esp->e_flag = 0;
-               esp->e_base.e_ap = NULL;
-       } 
+                esp->e_flag = 0;
+                esp->e_base.e_ap = NULL;
+        }
         else if (c == '*') {
-               /* Force direct page */
-               expr(esp, 0);
-               esp->e_mode = S_DIR;
-               if (esp->e_addr & ~0xFF)
-                       err('d');
-       } 
+                /* Force direct page */
+                expr(esp, 0);
+                esp->e_mode = S_DIR;
+                if (esp->e_addr & ~0xFF)
+                        err('d');
+        }
         else if (c == '/') {
-               /* Force inverted bit  */
-               expr(esp, 0);
-               esp->e_mode = S_NOT_BIT;
-               if (esp->e_addr & ~0xFF)
-                       err('d');
-       } 
+                /* Force inverted bit  */
+                expr(esp, 0);
+                esp->e_mode = S_NOT_BIT;
+                if (esp->e_addr & ~0xFF)
+                        err('d');
+        }
         else {
-               unget(c);
+                unget(c);
 
-               /* try for register: A, AB, R0-R7, DPTR, PC, Cy */
-               if ((esp->e_addr = admode(reg51)) != -1) {
-                       switch (esp->e_addr) {
+                /* try for register: A, AB, R0-R7, DPTR, PC, Cy */
+                if ((esp->e_addr = admode(reg51)) != -1) {
+                        switch (esp->e_addr) {
                         case A:
-                               esp->e_mode = S_A;
+                                esp->e_mode = S_A;
                                 break;
                         case AB:
-                               esp->e_mode = S_RAB;
+                                esp->e_mode = S_RAB;
                                 break;
                         case DPTR:
-                               esp->e_mode = S_DPTR;
+                                esp->e_mode = S_DPTR;
                                 break;
                         case PC:
-                               esp->e_mode = S_PC;
+                                esp->e_mode = S_PC;
                                 break;
                         case C:
-                               esp->e_mode = S_C;
+                                esp->e_mode = S_C;
                                 break;
-                       default:
-                               /* R0-R7 */
-                               esp->e_mode = S_REG;
+                        default:
+                                /* R0-R7 */
+                                esp->e_mode = S_REG;
                         }
-               } else {
-                       /* Must be an expression */
-                       expr(esp, 0);
+                } else {
+                        /* Must be an expression */
+                        expr(esp, 0);
                         if ((!esp->e_flag)
                                 && (esp->e_base.e_ap==NULL)
                                 && !(esp->e_addr & ~0xFF)) {
@@ -146,9 +146,9 @@ register struct expr *esp;
                         } else {
                                 esp->e_mode = S_EXT;
                         }
-               }
-       }
-       return (esp->e_mode);
+                }
+        }
+        return (esp->e_mode);
 }
 
 
@@ -159,51 +159,51 @@ int
 any(c,str)
 char    c, *str;
 {
-       while (*str)
-               if(*str++ == c)
-                       return(1);
-       return(0);
+        while (*str)
+                if(*str++ == c)
+                        return(1);
+        return(0);
 }
 
 int
 srch(str)
 register char *str;
 {
-       register char *ptr;
-       ptr = ip;
+        register const char *ptr;
+        ptr = ip;
 
-#if    CASE_SENSITIVE
-       while (*ptr && *str) {
-               if(*ptr != *str)
-                       break;
-               ptr++;
-               str++;
-       }
-       if (*ptr == *str) {
-               ip = ptr;
-               return(1);
-       }
+#if     CASE_SENSITIVE
+        while (*ptr && *str) {
+                if(*ptr != *str)
+                        break;
+                ptr++;
+                str++;
+        }
+        if (*ptr == *str) {
+                ip = ptr;
+                return(1);
+        }
 #else
-       while (*ptr && *str) {
-               if(ccase[*ptr] != ccase[*str])
-                       break;
-               ptr++;
-               str++;
-       }
-       if (ccase[*ptr] == ccase[*str]) {
-               ip = ptr;
-               return(1);
-       }
+        while (*ptr && *str) {
+                if(ccase[*ptr] != ccase[*str])
+                        break;
+                ptr++;
+                str++;
+        }
+        if (ccase[*ptr] == ccase[*str]) {
+                ip = ptr;
+                return(1);
+        }
 #endif
 
-       if (!*str)
-               if (any(*ptr," \t\n,];")) {
-                       ip = ptr;
-                       return(1);
-               }
-       return(0);
+        if (!*str)
+                if (any(*ptr," \t\n,];")) {
+                        ip = ptr;
+                        return(1);
+                }
+        return(0);
 }
-       
+
 /*
  * Enter admode() to search a specific addressing mode table
  * for a match. Return the addressing value on a match or
@@ -213,17 +213,17 @@ int
 admode(sp)
 register struct adsym *sp;
 {
-       register char *ptr;
-       register int i;
-       unget(getnb());
-       i = 0;
-       while ( *(ptr = (char *) &sp[i]) ) {
-               if (srch(ptr)) {
-                       return(sp[i].a_val);
-               }
-               i++;
-       }
-       return(-1);
+        register char *ptr;
+        register int i;
+        unget(getnb());
+        i = 0;
+        while ( *(ptr = (char *) &sp[i]) ) {
+                if (srch(ptr)) {
+                        return(sp[i].a_val);
+                }
+                i++;
+        }
+        return(-1);
 }
 
 /*
@@ -236,23 +236,23 @@ register struct adsym *sp;
 int
 reg()
 {
-       register struct mne *mp;
-       char id[NCPS];
+        register struct mne *mp;
+        char id[NCPS];
 
-       getid(id, -1);
-       if ((mp = mlookup(id))==NULL) {
-               aerr();
-               return (-1);
-       }
+        getid(id, -1);
+        if ((mp = mlookup(id))==NULL) {
+                aerr();
+                return (-1);
+        }
         switch (mp->m_type) {
         case S_A:
         case S_AB:
         case S_DPTR:
         case S_PC:
         case S_REG:
-               return (mp->m_valu);
+                return (mp->m_valu);
 
-       default:
-               return (-1);
+        default:
+                return (-1);
         }
 }