⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decode.c

📁 这个是LINUX下的GDB调度工具的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
  { FRV_INSN_CMADDHSS, FRVBF_INSN_CMADDHSS, FRVBF_SFMT_CMADDHSS },  { FRV_INSN_CMADDHUS, FRVBF_INSN_CMADDHUS, FRVBF_SFMT_CMADDHSS },  { FRV_INSN_CMSUBHSS, FRVBF_INSN_CMSUBHSS, FRVBF_SFMT_CMADDHSS },  { FRV_INSN_CMSUBHUS, FRVBF_INSN_CMSUBHUS, FRVBF_SFMT_CMADDHSS },  { FRV_INSN_MQADDHSS, FRVBF_INSN_MQADDHSS, FRVBF_SFMT_MQSATHS },  { FRV_INSN_MQADDHUS, FRVBF_INSN_MQADDHUS, FRVBF_SFMT_MQSATHS },  { FRV_INSN_MQSUBHSS, FRVBF_INSN_MQSUBHSS, FRVBF_SFMT_MQSATHS },  { FRV_INSN_MQSUBHUS, FRVBF_INSN_MQSUBHUS, FRVBF_SFMT_MQSATHS },  { FRV_INSN_CMQADDHSS, FRVBF_INSN_CMQADDHSS, FRVBF_SFMT_CMQADDHSS },  { FRV_INSN_CMQADDHUS, FRVBF_INSN_CMQADDHUS, FRVBF_SFMT_CMQADDHSS },  { FRV_INSN_CMQSUBHSS, FRVBF_INSN_CMQSUBHSS, FRVBF_SFMT_CMQADDHSS },  { FRV_INSN_CMQSUBHUS, FRVBF_INSN_CMQSUBHUS, FRVBF_SFMT_CMQADDHSS },  { FRV_INSN_MQLCLRHS, FRVBF_INSN_MQLCLRHS, FRVBF_SFMT_MQSATHS },  { FRV_INSN_MQLMTHS, FRVBF_INSN_MQLMTHS, FRVBF_SFMT_MQSATHS },  { FRV_INSN_MQSLLHI, FRVBF_INSN_MQSLLHI, FRVBF_SFMT_MQSLLHI },  { FRV_INSN_MQSRAHI, FRVBF_INSN_MQSRAHI, FRVBF_SFMT_MQSLLHI },  { FRV_INSN_MADDACCS, FRVBF_INSN_MADDACCS, FRVBF_SFMT_MADDACCS },  { FRV_INSN_MSUBACCS, FRVBF_INSN_MSUBACCS, FRVBF_SFMT_MADDACCS },  { FRV_INSN_MDADDACCS, FRVBF_INSN_MDADDACCS, FRVBF_SFMT_MDADDACCS },  { FRV_INSN_MDSUBACCS, FRVBF_INSN_MDSUBACCS, FRVBF_SFMT_MDADDACCS },  { FRV_INSN_MASACCS, FRVBF_INSN_MASACCS, FRVBF_SFMT_MASACCS },  { FRV_INSN_MDASACCS, FRVBF_INSN_MDASACCS, FRVBF_SFMT_MDASACCS },  { FRV_INSN_MMULHS, FRVBF_INSN_MMULHS, FRVBF_SFMT_MMULHS },  { FRV_INSN_MMULHU, FRVBF_INSN_MMULHU, FRVBF_SFMT_MMULHS },  { FRV_INSN_MMULXHS, FRVBF_INSN_MMULXHS, FRVBF_SFMT_MMULHS },  { FRV_INSN_MMULXHU, FRVBF_INSN_MMULXHU, FRVBF_SFMT_MMULHS },  { FRV_INSN_CMMULHS, FRVBF_INSN_CMMULHS, FRVBF_SFMT_CMMULHS },  { FRV_INSN_CMMULHU, FRVBF_INSN_CMMULHU, FRVBF_SFMT_CMMULHS },  { FRV_INSN_MQMULHS, FRVBF_INSN_MQMULHS, FRVBF_SFMT_MQMULHS },  { FRV_INSN_MQMULHU, FRVBF_INSN_MQMULHU, FRVBF_SFMT_MQMULHS },  { FRV_INSN_MQMULXHS, FRVBF_INSN_MQMULXHS, FRVBF_SFMT_MQMULHS },  { FRV_INSN_MQMULXHU, FRVBF_INSN_MQMULXHU, FRVBF_SFMT_MQMULHS },  { FRV_INSN_CMQMULHS, FRVBF_INSN_CMQMULHS, FRVBF_SFMT_CMQMULHS },  { FRV_INSN_CMQMULHU, FRVBF_INSN_CMQMULHU, FRVBF_SFMT_CMQMULHS },  { FRV_INSN_MMACHS, FRVBF_INSN_MMACHS, FRVBF_SFMT_MMACHS },  { FRV_INSN_MMACHU, FRVBF_INSN_MMACHU, FRVBF_SFMT_MMACHU },  { FRV_INSN_MMRDHS, FRVBF_INSN_MMRDHS, FRVBF_SFMT_MMACHS },  { FRV_INSN_MMRDHU, FRVBF_INSN_MMRDHU, FRVBF_SFMT_MMACHU },  { FRV_INSN_CMMACHS, FRVBF_INSN_CMMACHS, FRVBF_SFMT_CMMACHS },  { FRV_INSN_CMMACHU, FRVBF_INSN_CMMACHU, FRVBF_SFMT_CMMACHU },  { FRV_INSN_MQMACHS, FRVBF_INSN_MQMACHS, FRVBF_SFMT_MQMACHS },  { FRV_INSN_MQMACHU, FRVBF_INSN_MQMACHU, FRVBF_SFMT_MQMACHU },  { FRV_INSN_CMQMACHS, FRVBF_INSN_CMQMACHS, FRVBF_SFMT_CMQMACHS },  { FRV_INSN_CMQMACHU, FRVBF_INSN_CMQMACHU, FRVBF_SFMT_CMQMACHU },  { FRV_INSN_MQXMACHS, FRVBF_INSN_MQXMACHS, FRVBF_SFMT_MQMACHS },  { FRV_INSN_MQXMACXHS, FRVBF_INSN_MQXMACXHS, FRVBF_SFMT_MQMACHS },  { FRV_INSN_MQMACXHS, FRVBF_INSN_MQMACXHS, FRVBF_SFMT_MQMACHS },  { FRV_INSN_MCPXRS, FRVBF_INSN_MCPXRS, FRVBF_SFMT_MCPXRS },  { FRV_INSN_MCPXRU, FRVBF_INSN_MCPXRU, FRVBF_SFMT_MCPXRS },  { FRV_INSN_MCPXIS, FRVBF_INSN_MCPXIS, FRVBF_SFMT_MCPXRS },  { FRV_INSN_MCPXIU, FRVBF_INSN_MCPXIU, FRVBF_SFMT_MCPXRS },  { FRV_INSN_CMCPXRS, FRVBF_INSN_CMCPXRS, FRVBF_SFMT_CMCPXRS },  { FRV_INSN_CMCPXRU, FRVBF_INSN_CMCPXRU, FRVBF_SFMT_CMCPXRS },  { FRV_INSN_CMCPXIS, FRVBF_INSN_CMCPXIS, FRVBF_SFMT_CMCPXRS },  { FRV_INSN_CMCPXIU, FRVBF_INSN_CMCPXIU, FRVBF_SFMT_CMCPXRS },  { FRV_INSN_MQCPXRS, FRVBF_INSN_MQCPXRS, FRVBF_SFMT_MQCPXRS },  { FRV_INSN_MQCPXRU, FRVBF_INSN_MQCPXRU, FRVBF_SFMT_MQCPXRS },  { FRV_INSN_MQCPXIS, FRVBF_INSN_MQCPXIS, FRVBF_SFMT_MQCPXRS },  { FRV_INSN_MQCPXIU, FRVBF_INSN_MQCPXIU, FRVBF_SFMT_MQCPXRS },  { FRV_INSN_MEXPDHW, FRVBF_INSN_MEXPDHW, FRVBF_SFMT_MEXPDHW },  { FRV_INSN_CMEXPDHW, FRVBF_INSN_CMEXPDHW, FRVBF_SFMT_CMEXPDHW },  { FRV_INSN_MEXPDHD, FRVBF_INSN_MEXPDHD, FRVBF_SFMT_MEXPDHD },  { FRV_INSN_CMEXPDHD, FRVBF_INSN_CMEXPDHD, FRVBF_SFMT_CMEXPDHD },  { FRV_INSN_MPACKH, FRVBF_INSN_MPACKH, FRVBF_SFMT_MPACKH },  { FRV_INSN_MDPACKH, FRVBF_INSN_MDPACKH, FRVBF_SFMT_MDPACKH },  { FRV_INSN_MUNPACKH, FRVBF_INSN_MUNPACKH, FRVBF_SFMT_MUNPACKH },  { FRV_INSN_MDUNPACKH, FRVBF_INSN_MDUNPACKH, FRVBF_SFMT_MDUNPACKH },  { FRV_INSN_MBTOH, FRVBF_INSN_MBTOH, FRVBF_SFMT_MBTOH },  { FRV_INSN_CMBTOH, FRVBF_INSN_CMBTOH, FRVBF_SFMT_CMBTOH },  { FRV_INSN_MHTOB, FRVBF_INSN_MHTOB, FRVBF_SFMT_MHTOB },  { FRV_INSN_CMHTOB, FRVBF_INSN_CMHTOB, FRVBF_SFMT_CMHTOB },  { FRV_INSN_MBTOHE, FRVBF_INSN_MBTOHE, FRVBF_SFMT_MBTOHE },  { FRV_INSN_CMBTOHE, FRVBF_INSN_CMBTOHE, FRVBF_SFMT_CMBTOHE },  { FRV_INSN_MNOP, FRVBF_INSN_MNOP, FRVBF_SFMT_REI },  { FRV_INSN_MCLRACC_0, FRVBF_INSN_MCLRACC_0, FRVBF_SFMT_MCLRACC_0 },  { FRV_INSN_MCLRACC_1, FRVBF_INSN_MCLRACC_1, FRVBF_SFMT_MCLRACC_0 },  { FRV_INSN_MRDACC, FRVBF_INSN_MRDACC, FRVBF_SFMT_MRDACC },  { FRV_INSN_MRDACCG, FRVBF_INSN_MRDACCG, FRVBF_SFMT_MRDACCG },  { FRV_INSN_MWTACC, FRVBF_INSN_MWTACC, FRVBF_SFMT_MWTACC },  { FRV_INSN_MWTACCG, FRVBF_INSN_MWTACCG, FRVBF_SFMT_MWTACCG },  { FRV_INSN_MCOP1, FRVBF_INSN_MCOP1, FRVBF_SFMT_REI },  { FRV_INSN_MCOP2, FRVBF_INSN_MCOP2, FRVBF_SFMT_REI },  { FRV_INSN_FNOP, FRVBF_INSN_FNOP, FRVBF_SFMT_REI },};static const struct insn_sem frvbf_insn_sem_invalid = {  VIRTUAL_INSN_X_INVALID, FRVBF_INSN_X_INVALID, FRVBF_SFMT_EMPTY};/* Initialize an IDESC from the compile-time computable parts.  */static INLINE voidinit_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t){  const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;  id->num = t->index;  id->sfmt = t->sfmt;  if ((int) t->type <= 0)    id->idata = & cgen_virtual_insn_table[- (int) t->type];  else    id->idata = & insn_table[t->type];  id->attrs = CGEN_INSN_ATTRS (id->idata);  /* Oh my god, a magic number.  */  id->length = CGEN_INSN_BITSIZE (id->idata) / 8;#if WITH_PROFILE_MODEL_P  id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];  {    SIM_DESC sd = CPU_STATE (cpu);    SIM_ASSERT (t->index == id->timing->num);  }#endif  /* Semantic pointers are initialized elsewhere.  */}/* Initialize the instruction descriptor table.  */voidfrvbf_init_idesc_table (SIM_CPU *cpu){  IDESC *id,*tabend;  const struct insn_sem *t,*tend;  int tabsize = FRVBF_INSN__MAX;  IDESC *table = frvbf_insn_data;  memset (table, 0, tabsize * sizeof (IDESC));  /* First set all entries to the `invalid insn'.  */  t = & frvbf_insn_sem_invalid;  for (id = table, tabend = table + tabsize; id < tabend; ++id)    init_idesc (cpu, id, t);  /* Now fill in the values for the chosen cpu.  */  for (t = frvbf_insn_sem, tend = t + sizeof (frvbf_insn_sem) / sizeof (*t);       t != tend; ++t)    {      init_idesc (cpu, & table[t->index], t);    }  /* Link the IDESC table into the cpu.  */  CPU_IDESC (cpu) = table;}/* Given an instruction, return a pointer to its IDESC entry.  */const IDESC *frvbf_decode (SIM_CPU *current_cpu, IADDR pc,              CGEN_INSN_INT base_insn, CGEN_INSN_INT entire_insn,              ARGBUF *abuf){  /* Result of decoder.  */  FRVBF_INSN_TYPE itype;  {    CGEN_INSN_INT insn = base_insn;    {      unsigned int val = (((insn >> 18) & (127 << 0)));      switch (val)      {      case 0 :        {          unsigned int val = (((insn >> 6) & (15 << 0)));          switch (val)          {          case 0 : itype = FRVBF_INSN_ADD; goto extract_sfmt_add;          case 1 : itype = FRVBF_INSN_ADDCC; goto extract_sfmt_addcc;          case 2 : itype = FRVBF_INSN_ADDX; goto extract_sfmt_addx;          case 3 : itype = FRVBF_INSN_ADDXCC; goto extract_sfmt_addcc;          case 4 : itype = FRVBF_INSN_SUB; goto extract_sfmt_add;          case 5 : itype = FRVBF_INSN_SUBCC; goto extract_sfmt_addcc;          case 6 : itype = FRVBF_INSN_SUBX; goto extract_sfmt_addx;          case 7 : itype = FRVBF_INSN_SUBXCC; goto extract_sfmt_addcc;          case 8 : itype = FRVBF_INSN_SMUL; goto extract_sfmt_smul;          case 9 : itype = FRVBF_INSN_SMULCC; goto extract_sfmt_smulcc;          case 10 : itype = FRVBF_INSN_UMUL; goto extract_sfmt_smul;          case 11 : itype = FRVBF_INSN_UMULCC; goto extract_sfmt_smulcc;          case 12 : itype = FRVBF_INSN_CMPB; goto extract_sfmt_cmpb;          case 13 : itype = FRVBF_INSN_CMPBA; goto extract_sfmt_cmpb;          case 14 : itype = FRVBF_INSN_SDIV; goto extract_sfmt_sdiv;          case 15 : itype = FRVBF_INSN_UDIV; goto extract_sfmt_sdiv;          default : itype = FRVBF_INSN_X_INVALID; goto extract_sfmt_empty;          }        }      case 1 :        {          unsigned int val = (((insn >> 6) & (15 << 0)));          switch (val)          {          case 0 : itype = FRVBF_INSN_AND; goto extract_sfmt_add;          case 1 : itype = FRVBF_INSN_ANDCC; goto extract_sfmt_andcc;          case 2 : itype = FRVBF_INSN_OR; goto extract_sfmt_add;          case 3 : itype = FRVBF_INSN_ORCC; goto extract_sfmt_andcc;          case 4 : itype = FRVBF_INSN_XOR; goto extract_sfmt_add;          case 5 : itype = FRVBF_INSN_XORCC; goto extract_sfmt_andcc;          case 6 : itype = FRVBF_INSN_NOT; goto extract_sfmt_not;          case 8 : itype = FRVBF_INSN_SLL; goto extract_sfmt_add;          case 9 : itype = FRVBF_INSN_SLLCC; goto extract_sfmt_addcc;          case 10 : itype = FRVBF_INSN_SRL; goto extract_sfmt_add;          case 11 : itype = FRVBF_INSN_SRLCC; goto extract_sfmt_addcc;          case 12 : itype = FRVBF_INSN_SRA; goto extract_sfmt_add;          case 13 : itype = FRVBF_INSN_SRACC; goto extract_sfmt_addcc;          case 14 : itype = FRVBF_INSN_NSDIV; goto extract_sfmt_sdiv;          case 15 : itype = FRVBF_INSN_NUDIV; goto extract_sfmt_sdiv;          default : itype = FRVBF_INSN_X_INVALID; goto extract_sfmt_empty;          }        }      case 2 :        {          unsigned int val = (((insn >> 6) & (63 << 0)));          switch (val)          {          case 0 : itype = FRVBF_INSN_LDSB; goto extract_sfmt_ldsb;          case 1 : itype = FRVBF_INSN_LDUB; goto extract_sfmt_ldsb;          case 2 : itype = FRVBF_INSN_LDSH; goto extract_sfmt_ldsb;          case 3 : itype = FRVBF_INSN_LDUH; goto extract_sfmt_ldsb;          case 4 : itype = FRVBF_INSN_LD; goto extract_sfmt_ldsb;          case 5 : itype = FRVBF_INSN_LDD; goto extract_sfmt_ldd;          case 6 : itype = FRVBF_INSN_LDQ; goto extract_sfmt_ldq;          case 8 : itype = FRVBF_INSN_LDBF; goto extract_sfmt_ldbf;          case 9 : itype = FRVBF_INSN_LDHF; goto extract_sfmt_ldbf;          case 10 : itype = FRVBF_INSN_LDF; goto extract_sfmt_ldbf;          case 11 : itype = FRVBF_INSN_LDDF; goto extract_sfmt_lddf;          case 12 : itype = FRVBF_INSN_LDQF; goto extract_sfmt_ldqf;          case 13 : itype = FRVBF_INSN_LDC; goto extract_sfmt_ldc;          case 14 : itype = FRVBF_INSN_LDDC; goto extract_sfmt_lddc;          case 15 : itype = FRVBF_INSN_LDQC; goto extract_sfmt_ldqc;          case 16 : itype = FRVBF_INSN_LDSBU; goto extract_sfmt_ldsbu;          case 17 : itype = FRVBF_INSN_LDUBU; goto extract_sfmt_ldsbu;          case 18 : itype = FRVBF_INSN_LDSHU; goto extract_sfmt_ldsbu;          case 19 : itype = FRVBF_INSN_LDUHU; goto extract_sfmt_ldsbu;          case 20 : itype = FRVBF_INSN_LDU; goto extract_sfmt_ldsbu;          case 21 : itype = FRVBF_INSN_LDDU; goto extract_sfmt_lddu;          case 22 : itype = FRVBF_INSN_LDQU; goto extract_sfmt_ldqu;

⌨️ 快捷键说明

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