Guest User

Untitled

a guest
Jul 1st, 2022
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. static bool
  2. register_name (expressionS *expressionP, struct svp64_ctx *svp64)
  3. {
  4. char *name;
  5. char *start;
  6. char c;
  7. char save_lex = lex_type[':'];
  8. const struct powerpc_pd_reg *reg = NULL;
  9.  
  10. /* Find the spelling of the operand. */
  11. start = name = input_line_pointer;
  12. if (name[0] == '%' && ISALPHA (name[1]))
  13. name = ++input_line_pointer;
  14.  
  15. else if (!reg_names_p || !ISALPHA (name[0]))
  16. return false;
  17.  
  18. if (svp64)
  19. lex_type[':'] |= LEX_NAME;
  20. c = get_symbol_name (&name);
  21. lex_type[':'] = save_lex;
  22.  
  23. if (svp64)
  24. reg = reg_name_search (svp64_registers, svp64_num_registers, name);
  25. if (reg == NULL)
  26. reg = reg_name_search (pre_defined_registers, REG_NAME_CNT, name);
  27.  
  28. /* Put back the delimiting char. */
  29. *input_line_pointer = c;
  30.  
  31. /* Look to see if it's in the register table. */
  32. if (reg != NULL)
  33. {
  34. expressionP->X_op = O_register;
  35. expressionP->X_add_number = reg->value;
  36. expressionP->X_md = reg->flags;
  37.  
  38. /* Make the rest nice. */
  39. expressionP->X_add_symbol = NULL;
  40. expressionP->X_op_symbol = NULL;
  41. return true;
  42. }
  43.  
  44. /* Reset the line as if we had not done anything. */
  45. input_line_pointer = start;
  46. return false;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment