as_bad ("Invalid register in & expression");
as_bad (_("Invalid register in & expression"));
md_operand (expressionP)     expressionS *expressionP;{  if (input_line_pointer[0] == '%' && input_line_pointer[1] == '%')    {      /* We have a numeric register expression.  No biggy.  */      input_line_pointer += 2;	/* Skip %% */      (void) expression (expressionP);      if (expressionP->X_op != O_constant	  || expressionP->X_add_number > 255)	as_bad ("Invalid expression after %%%%\n");      expressionP->X_op = O_register;    }  else if (input_line_pointer[0] == '&')    {      /* We are taking the 'address' of a register...this one is not	 in the manual, but it *is* in traps/fpsymbol.h!  What they	 seem to want is the register number, as an absolute number.  */      input_line_pointer++;	/* Skip & */      (void) expression (expressionP);      if (expressionP->X_op != O_register)	as_bad ("Invalid register in & expression");      else	expressionP->X_op = O_constant;    }  else if (input_line_pointer[0] == '$'	   && isdigit ((unsigned char) input_line_pointer[1]))    {      long lab;      char *name;      symbolS *sym;      /* This is a local label.  */      ++input_line_pointer;      lab = (long) get_absolute_expression ();      if (dollar_label_defined (lab))	{	  name = dollar_label_name (lab, 0);	  sym = symbol_find (name);	}      else	{	  name = dollar_label_name (lab, 1);	  sym = symbol_find_or_make (name);	}      expressionP->X_op = O_symbol;      expressionP->X_add_symbol = sym;      expressionP->X_add_number = 0;    }  else if (input_line_pointer[0] == '$')    {      char *s;      char type;      int fieldnum, fieldlimit;      LITTLENUM_TYPE floatbuf[8];      /* $float(), $doubleN(), or $extendN() convert floating values	 to integers.  */      s = input_line_pointer;      ++s;      fieldnum = 0;      if (strncmp (s, "double", sizeof "double" - 1) == 0)	{	  s += sizeof "double" - 1;	  type = 'd';	  fieldlimit = 2;	}      else if (strncmp (s, "float", sizeof "float" - 1) == 0)	{	  s += sizeof "float" - 1;	  type = 'f';	  fieldlimit = 1;	}      else if (strncmp (s, "extend", sizeof "extend" - 1) == 0)	{	  s += sizeof "extend" - 1;	  type = 'x';	  fieldlimit = 4;	}      else 	{	  return;	}      if (isdigit (*s))	{	  fieldnum = *s - '0';	  ++s;	}      if (fieldnum >= fieldlimit)	return;      SKIP_WHITESPACE ();      if (*s != '(')	return;      ++s;      SKIP_WHITESPACE ();      s = atof_ieee (s, type, floatbuf);      if (s == NULL)	return;      s = s;      SKIP_WHITESPACE ();      if (*s != ')')	return;      ++s;      SKIP_WHITESPACE ();      input_line_pointer = s;      expressionP->X_op = O_constant;       expressionP->X_unsigned = 1;      expressionP->X_add_number = ((floatbuf[fieldnum * 2]				    << LITTLENUM_NUMBER_OF_BITS)				   + floatbuf[fieldnum * 2 + 1]);    }}