fr30-ibld.c

来自「基于4个mips核的noc设计」· C语言 代码 · 共 1,541 行 · 第 1/3 页

C
1,541
字号
      break;    case FR30_OPERAND_CRJ :      value = fields->f_CRj;      break;    case FR30_OPERAND_R13 :      value = 0;      break;    case FR30_OPERAND_R14 :      value = 0;      break;    case FR30_OPERAND_R15 :      value = 0;      break;    case FR30_OPERAND_RI :      value = fields->f_Ri;      break;    case FR30_OPERAND_RIC :      value = fields->f_Ric;      break;    case FR30_OPERAND_RJ :      value = fields->f_Rj;      break;    case FR30_OPERAND_RJC :      value = fields->f_Rjc;      break;    case FR30_OPERAND_RS1 :      value = fields->f_Rs1;      break;    case FR30_OPERAND_RS2 :      value = fields->f_Rs2;      break;    case FR30_OPERAND_CC :      value = fields->f_cc;      break;    case FR30_OPERAND_CCC :      value = fields->f_ccc;      break;    case FR30_OPERAND_DIR10 :      value = fields->f_dir10;      break;    case FR30_OPERAND_DIR8 :      value = fields->f_dir8;      break;    case FR30_OPERAND_DIR9 :      value = fields->f_dir9;      break;    case FR30_OPERAND_DISP10 :      value = fields->f_disp10;      break;    case FR30_OPERAND_DISP8 :      value = fields->f_disp8;      break;    case FR30_OPERAND_DISP9 :      value = fields->f_disp9;      break;    case FR30_OPERAND_I20 :      value = fields->f_i20;      break;    case FR30_OPERAND_I32 :      value = fields->f_i32;      break;    case FR30_OPERAND_I8 :      value = fields->f_i8;      break;    case FR30_OPERAND_LABEL12 :      value = fields->f_rel12;      break;    case FR30_OPERAND_LABEL9 :      value = fields->f_rel9;      break;    case FR30_OPERAND_M4 :      value = fields->f_m4;      break;    case FR30_OPERAND_PS :      value = 0;      break;    case FR30_OPERAND_REGLIST_HI_LD :      value = fields->f_reglist_hi_ld;      break;    case FR30_OPERAND_REGLIST_HI_ST :      value = fields->f_reglist_hi_st;      break;    case FR30_OPERAND_REGLIST_LOW_LD :      value = fields->f_reglist_low_ld;      break;    case FR30_OPERAND_REGLIST_LOW_ST :      value = fields->f_reglist_low_st;      break;    case FR30_OPERAND_S10 :      value = fields->f_s10;      break;    case FR30_OPERAND_U10 :      value = fields->f_u10;      break;    case FR30_OPERAND_U4 :      value = fields->f_u4;      break;    case FR30_OPERAND_U4C :      value = fields->f_u4c;      break;    case FR30_OPERAND_U8 :      value = fields->f_u8;      break;    case FR30_OPERAND_UDISP6 :      value = fields->f_udisp6;      break;    default :      /* xgettext:c-format */      fprintf (stderr, _("Unrecognized field %d while getting int operand.\n"),		       opindex);      abort ();  }  return value;}bfd_vmafr30_cgen_get_vma_operand (cd, opindex, fields)     CGEN_CPU_DESC cd;     int opindex;     const CGEN_FIELDS * fields;{  bfd_vma value;  switch (opindex)    {    case FR30_OPERAND_CRI :      value = fields->f_CRi;      break;    case FR30_OPERAND_CRJ :      value = fields->f_CRj;      break;    case FR30_OPERAND_R13 :      value = 0;      break;    case FR30_OPERAND_R14 :      value = 0;      break;    case FR30_OPERAND_R15 :      value = 0;      break;    case FR30_OPERAND_RI :      value = fields->f_Ri;      break;    case FR30_OPERAND_RIC :      value = fields->f_Ric;      break;    case FR30_OPERAND_RJ :      value = fields->f_Rj;      break;    case FR30_OPERAND_RJC :      value = fields->f_Rjc;      break;    case FR30_OPERAND_RS1 :      value = fields->f_Rs1;      break;    case FR30_OPERAND_RS2 :      value = fields->f_Rs2;      break;    case FR30_OPERAND_CC :      value = fields->f_cc;      break;    case FR30_OPERAND_CCC :      value = fields->f_ccc;      break;    case FR30_OPERAND_DIR10 :      value = fields->f_dir10;      break;    case FR30_OPERAND_DIR8 :      value = fields->f_dir8;      break;    case FR30_OPERAND_DIR9 :      value = fields->f_dir9;      break;    case FR30_OPERAND_DISP10 :      value = fields->f_disp10;      break;    case FR30_OPERAND_DISP8 :      value = fields->f_disp8;      break;    case FR30_OPERAND_DISP9 :      value = fields->f_disp9;      break;    case FR30_OPERAND_I20 :      value = fields->f_i20;      break;    case FR30_OPERAND_I32 :      value = fields->f_i32;      break;    case FR30_OPERAND_I8 :      value = fields->f_i8;      break;    case FR30_OPERAND_LABEL12 :      value = fields->f_rel12;      break;    case FR30_OPERAND_LABEL9 :      value = fields->f_rel9;      break;    case FR30_OPERAND_M4 :      value = fields->f_m4;      break;    case FR30_OPERAND_PS :      value = 0;      break;    case FR30_OPERAND_REGLIST_HI_LD :      value = fields->f_reglist_hi_ld;      break;    case FR30_OPERAND_REGLIST_HI_ST :      value = fields->f_reglist_hi_st;      break;    case FR30_OPERAND_REGLIST_LOW_LD :      value = fields->f_reglist_low_ld;      break;    case FR30_OPERAND_REGLIST_LOW_ST :      value = fields->f_reglist_low_st;      break;    case FR30_OPERAND_S10 :      value = fields->f_s10;      break;    case FR30_OPERAND_U10 :      value = fields->f_u10;      break;    case FR30_OPERAND_U4 :      value = fields->f_u4;      break;    case FR30_OPERAND_U4C :      value = fields->f_u4c;      break;    case FR30_OPERAND_U8 :      value = fields->f_u8;      break;    case FR30_OPERAND_UDISP6 :      value = fields->f_udisp6;      break;    default :      /* xgettext:c-format */      fprintf (stderr, _("Unrecognized field %d while getting vma operand.\n"),		       opindex);      abort ();  }  return value;}/* Stuffing values in cgen_fields is handled by a collection of functions.   They are distinguished by the type of the VALUE argument they accept.   TODO: floating point, inlining support, remove cases where argument type   not appropriate.  */voidfr30_cgen_set_int_operand (cd, opindex, fields, value)     CGEN_CPU_DESC cd;     int opindex;     CGEN_FIELDS * fields;     int value;{  switch (opindex)    {    case FR30_OPERAND_CRI :      fields->f_CRi = value;      break;    case FR30_OPERAND_CRJ :      fields->f_CRj = value;      break;    case FR30_OPERAND_R13 :      break;    case FR30_OPERAND_R14 :      break;    case FR30_OPERAND_R15 :      break;    case FR30_OPERAND_RI :      fields->f_Ri = value;      break;    case FR30_OPERAND_RIC :      fields->f_Ric = value;      break;    case FR30_OPERAND_RJ :      fields->f_Rj = value;      break;    case FR30_OPERAND_RJC :      fields->f_Rjc = value;      break;    case FR30_OPERAND_RS1 :      fields->f_Rs1 = value;      break;    case FR30_OPERAND_RS2 :      fields->f_Rs2 = value;      break;    case FR30_OPERAND_CC :      fields->f_cc = value;      break;    case FR30_OPERAND_CCC :      fields->f_ccc = value;      break;    case FR30_OPERAND_DIR10 :      fields->f_dir10 = value;      break;    case FR30_OPERAND_DIR8 :      fields->f_dir8 = value;      break;    case FR30_OPERAND_DIR9 :      fields->f_dir9 = value;      break;    case FR30_OPERAND_DISP10 :      fields->f_disp10 = value;      break;    case FR30_OPERAND_DISP8 :      fields->f_disp8 = value;      break;    case FR30_OPERAND_DISP9 :      fields->f_disp9 = value;      break;    case FR30_OPERAND_I20 :      fields->f_i20 = value;      break;    case FR30_OPERAND_I32 :      fields->f_i32 = value;      break;    case FR30_OPERAND_I8 :      fields->f_i8 = value;      break;    case FR30_OPERAND_LABEL12 :      fields->f_rel12 = value;      break;    case FR30_OPERAND_LABEL9 :      fields->f_rel9 = value;      break;    case FR30_OPERAND_M4 :      fields->f_m4 = value;      break;    case FR30_OPERAND_PS :      break;    case FR30_OPERAND_REGLIST_HI_LD :      fields->f_reglist_hi_ld = value;      break;    case FR30_OPERAND_REGLIST_HI_ST :      fields->f_reglist_hi_st = value;      break;    case FR30_OPERAND_REGLIST_LOW_LD :      fields->f_reglist_low_ld = value;      break;    case FR30_OPERAND_REGLIST_LOW_ST :      fields->f_reglist_low_st = value;      break;    case FR30_OPERAND_S10 :      fields->f_s10 = value;      break;    case FR30_OPERAND_U10 :      fields->f_u10 = value;      break;    case FR30_OPERAND_U4 :      fields->f_u4 = value;      break;    case FR30_OPERAND_U4C :      fields->f_u4c = value;      break;    case FR30_OPERAND_U8 :      fields->f_u8 = value;      break;    case FR30_OPERAND_UDISP6 :      fields->f_udisp6 = value;      break;    default :      /* xgettext:c-format */      fprintf (stderr, _("Unrecognized field %d while setting int operand.\n"),		       opindex);      abort ();  }}voidfr30_cgen_set_vma_operand (cd, opindex, fields, value)     CGEN_CPU_DESC cd;     int opindex;     CGEN_FIELDS * fields;     bfd_vma value;{  switch (opindex)    {    case FR30_OPERAND_CRI :      fields->f_CRi = value;      break;    case FR30_OPERAND_CRJ :      fields->f_CRj = value;      break;    case FR30_OPERAND_R13 :      break;    case FR30_OPERAND_R14 :      break;    case FR30_OPERAND_R15 :      break;    case FR30_OPERAND_RI :      fields->f_Ri = value;      break;    case FR30_OPERAND_RIC :      fields->f_Ric = value;      break;    case FR30_OPERAND_RJ :      fields->f_Rj = value;      break;    case FR30_OPERAND_RJC :      fields->f_Rjc = value;      break;    case FR30_OPERAND_RS1 :      fields->f_Rs1 = value;      break;    case FR30_OPERAND_RS2 :      fields->f_Rs2 = value;      break;    case FR30_OPERAND_CC :      fields->f_cc = value;      break;    case FR30_OPERAND_CCC :      fields->f_ccc = value;      break;    case FR30_OPERAND_DIR10 :      fields->f_dir10 = value;      break;    case FR30_OPERAND_DIR8 :      fields->f_dir8 = value;      break;    case FR30_OPERAND_DIR9 :      fields->f_dir9 = value;      break;    case FR30_OPERAND_DISP10 :      fields->f_disp10 = value;      break;    case FR30_OPERAND_DISP8 :      fields->f_disp8 = value;      break;    case FR30_OPERAND_DISP9 :      fields->f_disp9 = value;      break;    case FR30_OPERAND_I20 :      fields->f_i20 = value;      break;    case FR30_OPERAND_I32 :      fields->f_i32 = value;      break;    case FR30_OPERAND_I8 :      fields->f_i8 = value;      break;    case FR30_OPERAND_LABEL12 :      fields->f_rel12 = value;      break;    case FR30_OPERAND_LABEL9 :      fields->f_rel9 = value;      break;    case FR30_OPERAND_M4 :      fields->f_m4 = value;      break;    case FR30_OPERAND_PS :      break;    case FR30_OPERAND_REGLIST_HI_LD :      fields->f_reglist_hi_ld = value;      break;    case FR30_OPERAND_REGLIST_HI_ST :      fields->f_reglist_hi_st = value;      break;    case FR30_OPERAND_REGLIST_LOW_LD :      fields->f_reglist_low_ld = value;      break;    case FR30_OPERAND_REGLIST_LOW_ST :      fields->f_reglist_low_st = value;      break;    case FR30_OPERAND_S10 :      fields->f_s10 = value;      break;    case FR30_OPERAND_U10 :      fields->f_u10 = value;      break;    case FR30_OPERAND_U4 :      fields->f_u4 = value;      break;    case FR30_OPERAND_U4C :      fields->f_u4c = value;      break;    case FR30_OPERAND_U8 :      fields->f_u8 = value;      break;    case FR30_OPERAND_UDISP6 :      fields->f_udisp6 = value;      break;    default :      /* xgettext:c-format */      fprintf (stderr, _("Unrecognized field %d while setting vma operand.\n"),		       opindex);      abort ();  }}/* Function to call before using the instruction builder tables.  */voidfr30_cgen_init_ibld_table (cd)     CGEN_CPU_DESC cd;{  cd->insert_handlers = & fr30_cgen_insert_handlers[0];  cd->extract_handlers = & fr30_cgen_extract_handlers[0];  cd->insert_operand = fr30_cgen_insert_operand;  cd->extract_operand = fr30_cgen_extract_operand;  cd->get_int_operand = fr30_cgen_get_int_operand;  cd->set_int_operand = fr30_cgen_set_int_operand;  cd->get_vma_operand = fr30_cgen_get_vma_operand;  cd->set_vma_operand = fr30_cgen_set_vma_operand;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?