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

📄 dasm.c

📁 gdb for adsp develop
💻 C
📖 第 1 页 / 共 3 页
字号:
   int ce;   int cntl;   ce = (int) ((instr->c >> 7) & 0x01);   cntl = (int) (instr->c & 0x7f);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %x,0x%x,%s,%s",                 opcode_name[instr->op], ce, cntl,                 reg[instr->a], reg[instr->b]);   (void) fprintf(stderr, "%s %x,0x%x,%s,%s",                 opcode_name[instr->op], ce, cntl,                 reg[instr->a], reg[instr->b]);   }/*** Format:  <Mnemonic>  ce, cntl, ra, const8**** (See LOADM, LOADSET, STORE, STOREL, etc...)*//*ARGSUSED*/voiddasm_ce_cntl_ra_const8(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   int ce;   int cntl;   ce = (int) ((instr->c >> 7) & 0x01);   cntl = (int) (instr->c & 0x7f);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %x,0x%x,%s,0x%x",                 opcode_name[instr->op], ce, cntl,                 reg[instr->a], instr->b);   (void) fprintf(stderr, "%s %x,0x%x,%s,0x%x",                 opcode_name[instr->op], ce, cntl,                 reg[instr->a], instr->b);   }/*** Format:  <Mnemonic>  rc, rb**** (See CLZ, DIV0)*//*ARGSUSED*/voiddasm_rc_rb(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,%s", opcode_name[instr->op],                 reg[instr->c], reg[instr->b]);   (void) fprintf(stderr, "%s %s,%s", opcode_name[instr->op],                 reg[instr->c], reg[instr->b]);   }/*** Format:  <Mnemonic>  rc, const8**** (See CLZ, DIV0)*//*ARGSUSED*/voiddasm_rc_const8(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,0x%x", opcode_name[instr->op],                 reg[instr->c], instr->b);   (void) fprintf(stderr, "%s %s,0x%x", opcode_name[instr->op],                 reg[instr->c], instr->b);   }/*** Format:  <Mnemonic>  rc, ra, rb**** (See ADD, AND, etc...)*//*ARGSUSED*/voiddasm_rc_ra_rb(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,%s,%s", opcode_name[instr->op],                 reg[instr->c], reg[instr->a], reg[instr->b]);   (void) fprintf(stderr, "%s %s,%s,%s", opcode_name[instr->op],                 reg[instr->c], reg[instr->a], reg[instr->b]);   }/*** Format:  <Mnemonic>  rc, ra, const8**** (See ADD, AND, etc...)*//*ARGSUSED*/voiddasm_rc_ra_const8(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,%s,0x%x", opcode_name[instr->op],                 reg[instr->c], reg[instr->a], instr->b);   (void) fprintf(stderr, "%s %s,%s,0x%x", opcode_name[instr->op],                 reg[instr->c], reg[instr->a], instr->b);   }/*** Format:  <Mnemonic>  vn, ra, rb**** (See ASEQ, ASGE, etc...)**** Note:  This function also prints out a "nop" if the**        instruction is an ASEQ and RA == RB.***//*ARGSUSED*/voiddasm_vn_ra_rb(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   if ((instr->op == ASEQ0) &&       (instr->a == instr->b))  {      if (io_config.echo_mode == (INT32) TRUE)       (void) fprintf(io_config.echo_file, "nop");      (void) fprintf(stderr, "nop");      } else {	 if (io_config.echo_mode == (INT32) TRUE)          (void) fprintf(io_config.echo_file, "%s 0x%x,%s,%s", opcode_name[instr->op],                       instr->c, reg[instr->a], reg[instr->b]);         (void) fprintf(stderr, "%s 0x%x,%s,%s", opcode_name[instr->op],                       instr->c, reg[instr->a], reg[instr->b]);      }   }/*** Format:  <Mnemonic>  vn, ra, const8**** (See ASEQ, ASGE, etc...)*//*ARGSUSED*/voiddasm_vn_ra_const8(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s 0x%x,%s,0x%x", opcode_name[instr->op],                 instr->c, reg[instr->a], instr->b);   (void) fprintf(stderr, "%s 0x%x,%s,0x%x", opcode_name[instr->op],                 instr->c, reg[instr->a], instr->b);   }/*** Format:  <Mnemonic>  rc, ra**** (See MFTBL)*//*ARGSUSED*/voiddasm_rc_ra(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,%s", opcode_name[instr->op],                 reg[instr->c], reg[instr->a]);   (void) fprintf(stderr, "%s %s,%s", opcode_name[instr->op],                 reg[instr->c], reg[instr->a]);   }/*** Format:  <Mnemonic>**** (See HALT, IRET)*//*ARGSUSED*/voiddasm_none(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   (void) fprintf(stderr, "%s", opcode_name[instr->op]);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s", opcode_name[instr->op]);   }voiddasm_one(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   (void) fprintf(stderr, "%s 0x%x", opcode_name[instr->op],(int) (instr->c & 0x3));   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s 0x%x", opcode_name[instr->op], (int) (instr->c & 0x3));   }/*** Format:  <Mnemonic>  target**** (See JMP, etc...)*//*ARGSUSED*/voiddasm_atarget(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   INT32  const16;   INT32  i_17_10;   INT32  i_9_2;   i_17_10 = ((INT32) instr->c) << 10;   i_9_2 = ((INT32) instr->b) << 2;   const16 = (i_17_10 | i_9_2);   (void) fprintf(stderr, "%s 0x%lx", opcode_name[instr->op],                 const16);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s 0x%lx", opcode_name[instr->op],                 const16);   }/*** Format:  <Mnemonic>  target+pc**** (See JMP, etc...)*/voiddasm_rtarget(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   INT32  const16;   INT32  i_17_10;   INT32  i_9_2;   i_17_10 = ((INT32) instr->c) << 10;   i_9_2 = ((INT32) instr->b) << 2;   const16 = (i_17_10 | i_9_2);   if ((const16 & 0x00020000) != 0)  /* Sign extend (bit 17) */      const16 = (const16 | 0xfffc0000);   (void) fprintf(stderr, "%s 0x%lx", opcode_name[instr->op],                 (const16+pc));   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s 0x%lx", opcode_name[instr->op],                 (const16+pc));   }/*** Format:  <Mnemonic>  ra, target**** (See CALL, JMPFDEC, JMPT, etc...)*//*ARGSUSED*/voiddasm_ra_atarget(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   INT32  const16;   INT32  i_17_10;   INT32  i_9_2;   i_17_10 = ((INT32) instr->c) << 10;   i_9_2 = ((INT32) instr->b) << 2;   const16 = (i_17_10 | i_9_2);   (void) fprintf(stderr, "%s %s,0x%lx", opcode_name[instr->op],                 reg[instr->a], const16);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,0x%lx", opcode_name[instr->op],                 reg[instr->a], const16);   }/*** Format:  <Mnemonic>  ra, target**** (See CALL, JMPFDEC, JMPT, etc...)*/voiddasm_ra_rtarget(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   INT32  const16;   INT32  i_17_10;   INT32  i_9_2;   i_17_10 = ((INT32) instr->c) << 10;   i_9_2 = ((INT32) instr->b) << 2;   const16 = (i_17_10 | i_9_2);   if ((const16 & 0x00020000) != 0)  /* Sign extend (bit 17) */      const16 = (const16 | 0xfffc0000);   (void) fprintf(stderr, "%s %s,0x%lx", opcode_name[instr->op],                 reg[instr->a], (const16+pc));   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,0x%lx", opcode_name[instr->op],                 reg[instr->a], (const16+pc));   }/*** Format:  <Mnemonic>  ra, rb**** (See CALLI, JMPFI)*//*ARGSUSED*/voiddasm_ra_rb(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   (void) fprintf(stderr, "%s %s,%s", opcode_name[instr->op],                 reg[instr->a], reg[instr->b]);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,%s", opcode_name[instr->op],                 reg[instr->a], reg[instr->b]);   }/*** Format:  <Mnemonic>  rb**** (See JMPI)*//*ARGSUSED*/voiddasm_rb(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   (void) fprintf(stderr, "%s %s", opcode_name[instr->op],                 reg[instr->b]);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s", opcode_name[instr->op],                 reg[instr->b]);   }/*** Format:  <Mnemonic>  rc, spid**** (See MFSR)*//*ARGSUSED*/voiddasm_rc_spid(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   (void) fprintf(stderr, "%s %s,%s", opcode_name[instr->op],                 reg[instr->c], spreg[instr->a]);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,%s", opcode_name[instr->op],                 reg[instr->c], spreg[instr->a]);   }/*** Format:  <Mnemonic>  spid, rb**** (See MTSR)*//*ARGSUSED*/voiddasm_spid_rb(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,%s", opcode_name[instr->op],                 spreg[instr->a], reg[instr->b]);   (void) fprintf(stderr, "%s %s,%s", opcode_name[instr->op],                 spreg[instr->a], reg[instr->b]);   }/*** Format:  <Mnemonic>  dc, ra, rb**** (See CLASS)*//*ARGSUSED*/voiddasm_dc_ra_rb(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   (void) fprintf(stderr, "%s %s,%s", opcode_name[instr->op],                 reg[instr->c], reg[instr->a]);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,%s", opcode_name[instr->op],                 reg[instr->c], reg[instr->a]);   }/*** Format:  <Mnemonic>  rc, ra, UI, RND, FD, FS**** (See CONVERT)*//*ARGSUSED*/voiddasm_convert(instr, pc)   struct   instr_t *instr;   ADDR32   pc;   {   int ui;   int rnd;   int fd;   int fs;   ui = (int) ((instr->b >> 7) & 0x01);   rnd = (int) ((instr->b >> 4) & 0x07);   fd = (int) ((instr->b >> 2) & 0x03);   fs = (int) (instr->b & 0x03);   if (io_config.echo_mode == (INT32) TRUE)    (void) fprintf(io_config.echo_file, "%s %s,%s,%x,%x,%x,%x",                 opcode_name[instr->op],                 reg[instr->c], reg[instr->a],                 ui, rnd, fd, fs);   (void) fprintf(stderr, "%s %s,%s,%x,%x,%x,%x",                 opcode_name[instr->op],                 reg[instr->c], reg[instr->a],                 ui, rnd, fd, fs);   }

⌨️ 快捷键说明

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