as_bad ("expect :8 or :16 here");
as_bad (_("expect :8 or :16 here"));
get_operand (ptr, op, dst, direction)     char **ptr;     struct h8_op *op;     unsigned int dst;     int direction;{  char *src = *ptr;  op_type mode;  unsigned int num;  unsigned int len;  op->mode = E;  /* Gross.  Gross.  ldm and stm have a format not easily handled     by get_operand.  We deal with it explicitly here.  */  if (src[0] == 'e' && src[1] == 'r' && isdigit(src[2])      && src[3] == '-' && src[4] == 'e' && src[5] == 'r' && isdigit(src[6]))    {      int low, high;      low = src[2] - '0';      high = src[6] - '0';      if (high < low)	as_bad ("Invalid register list for ldm/stm\n");      if (low % 2)	as_bad ("Invalid register list for ldm/stm\n");      if (high - low > 4)	as_bad ("Invalid register list for ldm/stm\n");      if (high - low != 2	  && low % 4)	as_bad ("Invalid register list for ldm/stm\n");      /* Even sicker.  We encode two registers into op->reg.  One	 for the low register to save, the other for the high	 register to save;  we also set the high bit in op->reg	 so we know this is "very special".  */      op->reg = 0x80000000 | (high << 8) | low;      op->mode = REG;      *ptr = src + 7;      return;    }  len = parse_reg (src, &op->mode, &op->reg, direction);  if (len)    {      *ptr = src + len;      return;    }  if (*src == '@')    {      src++;      if (*src == '@')	{	  src++;	  src = parse_exp (src, &op->exp);	  src = skip_colonthing (src, &op->exp, &op->mode);	  *ptr = src;	  op->mode = MEMIND;	  return;	}      if (*src == '-')	{	  src++;	  len = parse_reg (src, &mode, &num, direction);	  if (len == 0)	    {	      /* Oops, not a reg after all, must be ordinary exp */	      src--;	      /* must be a symbol */	      op->mode = ABS | PSIZE | direction;	      *ptr = skip_colonthing (parse_exp (src, &op->exp),				      &op->exp, &op->mode);	      return;	    }	  if ((mode & SIZE) != PSIZE)	    as_bad ("Wrong size pointer register for architecture.");	  op->mode = RDDEC;	  op->reg = num;	  *ptr = src + len;	  return;	}      if (*src == '(')	{	  /* Disp */	  src++;	  /* Start off assuming a 16 bit offset */	  src = parse_exp (src, &op->exp);	  src = colonmod24 (op, src);	  if (*src == ')')	    {	      src++;	      op->mode |= ABS | direction;	      *ptr = src;	      return;	    }	  if (*src != ',')	    {	      as_bad ("expected @(exp, reg16)");	      return;	    }	  src++;	  len = parse_reg (src, &mode, &op->reg, direction);	  if (len == 0 || !(mode & REG))	    {	      as_bad ("expected @(exp, reg16)");	      return;	    }	  op->mode |= DISP | direction;	  dispreg = op->reg;	  src += len;	  src = skip_colonthing (src, &op->exp, &op->mode);	  if (*src != ')' && '(')	    {	      as_bad ("expected @(exp, reg16)");	      return;	    }	  *ptr = src + 1;	  return;	}      len = parse_reg (src, &mode, &num, direction);      if (len)	{	  src += len;	  if (*src == '+')	    {	      src++;	      if ((mode & SIZE) != PSIZE)		as_bad ("Wrong size pointer register for architecture.");	      op->mode = RSINC;	      op->reg = num;	      *ptr = src;	      return;	    }	  if ((mode & SIZE) != PSIZE)	    as_bad ("Wrong size pointer register for architecture.");	  op->mode = direction | IND | PSIZE;	  op->reg = num;	  *ptr = src;	  return;	}      else	{	  /* must be a symbol */	  op->mode = ABS | direction;	  src = parse_exp (src, &op->exp);	  *ptr = colonmod24 (op, src);	  return;	}    }  if (*src == '#')    {      src++;      op->mode = IMM;      src = parse_exp (src, &op->exp);      *ptr = skip_colonthing (src, &op->exp, &op->mode);      return;    }  else if (strncmp (src, "mach", 4) == 0	   || strncmp (src, "macl", 4) == 0)    {      op->reg = src[3] == 'l';      op->mode = MACREG;      *ptr = src + 4;      return;    }  else    {      src = parse_exp (src, &op->exp);      /* Trailing ':' size ? */      if (*src == ':')	{	  if (src[1] == '1' && src[2] == '6')	    {	      op->mode = PCREL | L_16;	      src += 3;	    }	  else if (src[1] == '8')	    {	      op->mode = PCREL | L_8;	      src += 2;	    }	  else	    {	      as_bad ("expect :8 or :16 here");	    }	}      else	{	  op->mode = PCREL | bsize;	}      *ptr = src;    }}