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

📄 sparc_disas.cpp

📁 usb-jtag转换,sparc芯片反汇编,sparc芯片调试的工具,可以对芯片内的gpio,sdram,flash进行读写,还可以一次下载64K大小的数据,反汇编,在线调试.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			  else
			  {
				  tostf(pc);
				  strcat(dis_info, bb);
				  strcat(dis_info, "jmp");
				  strcat(dis_info, bl2);
				  regimm(insn, DEC, true);
			  }

		  }
		  else
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "jmpl");
			  strcat(dis_info, bl2);
			  regres(insn, DEC);
		  }
		  return dis_info;
      case TICC:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "t");
		  branchop(insn);
		  strcat(dis_info, bl2);
		  regimm(insn, HEX, false);
          return dis_info;
      case FLUSH: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "flush");
		  strcat(dis_info, bl2);
		  regimm(insn, HEX, false);
          return dis_info;
      case RETT: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "rett");
		  strcat(dis_info, bl2);
		  regimm(insn, DEC, true);
          return dis_info;
      case RESTORE:
		  if (rd == 0)
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "restore");
		  }
		  else
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "restore");
			  strcat(dis_info, bl2);
			  regres(insn, HEX);
		  }
		  return dis_info;
	  case SAVE: 
		  if (rd == 0)
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "save");
		  }
		  else
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "save");
			  strcat(dis_info, bl2);
			  regres(insn, DEC);
		  }
		  return dis_info;
      case FPOP1:
		  switch (opf)
		  {
		  case FITOS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fitos");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FITOD:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fitod");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FSTOI:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fstoi");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FDTOI:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fdtoi");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FSTOD:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fistod");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FDTOS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fdtos");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FMOVS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fmovs");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FNEGS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fnegs");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FABSS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fabss");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FSQRTS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fsqrts");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FSQRTD:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fsqrtd");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FADDS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fadds");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FADDD:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "faddd");
			  strcat(dis_info, bl2);
			  freg3(insn);
			  return dis_info;
		  case FSUBS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fsubs");
			  strcat(dis_info, bl2);
			  freg3(insn);
			  return dis_info;
		  case FSUBD:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fsubd");
			  strcat(dis_info, bl2);
			  freg3(insn);
			  return dis_info;
		  case FMULS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fmuls");
			  strcat(dis_info, bl2);
			  freg3(insn);
			  return dis_info;
		  case FMULD:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fmuld");
			  strcat(dis_info, bl2);
			  freg3(insn);
			  return dis_info;
		  case FSMULD:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fsmuld");
			  strcat(dis_info, bl2);
			  freg2(insn);
			  return dis_info;
		  case FDIVS:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fdivs");
			  strcat(dis_info, bl2);
			  freg3(insn);
			  return dis_info;
		  case FDIVD:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "fdivd");
			  strcat(dis_info, bl2);
			  freg3(insn);
			  return dis_info;
          default:
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "unknown FOP1: ");
			  strcat(dis_info, bl2);
			  tost(op);
			  return dis_info;
		  }
	case FPOP2:
		switch(opf)
		{
		case FCMPS:
			tostf(pc);
			strcat(dis_info, bb);
			strcat(dis_info, "fcmps");
			strcat(dis_info, bl2);
			fregc(insn);
			return dis_info;
		case FCMPD:
			tostf(pc);
			strcat(dis_info, bb);
			strcat(dis_info, "fcmpd");
			strcat(dis_info, bl2);
			fregc(insn);
			return dis_info;
		case FCMPES:
			tostf(pc);
			strcat(dis_info, bb);
			strcat(dis_info, "fcmpes");
			strcat(dis_info, bl2);
			fregc(insn);
			return dis_info;
		case FCMPED:
			tostf(pc);
			strcat(dis_info, bb);
			strcat(dis_info, "fcmped");
			strcat(dis_info, bl2);
			fregc(insn);
			return dis_info;
        default:
			tostf(pc);
			strcat(dis_info, bb);
			strcat(dis_info, "unknown FOP2: ");
			strcat(dis_info, bl2);
			tost(insn.op);
			return dis_info;
		}
	case CPOP1: 
		tostf(pc);
		strcat(dis_info, bb);
		strcat(dis_info, "cpop1");
		strcat(dis_info, bl2);
		tost(opf);
		strcat(dis_info, ", ");
		creg3(insn);
		return dis_info;
    case CPOP2:
		tostf(pc);
		strcat(dis_info, bb);
		strcat(dis_info, "cpop2");
		strcat(dis_info, bl2);
		tost(opf);
		strcat(dis_info, ", ");
		creg3(insn);
		return dis_info;
    default:
		tostf(pc);
		strcat(dis_info, bb);
		strcat(dis_info, "unknown opcode: ");
		tost(insn.op);
		return dis_info;
    }
    case LDST:
      switch (op3)
	  {
      case STC:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "st");
		  strcat(dis_info, bl2);
		  stparcp(insn, rd, DEC);
		  return dis_info;
      case STF:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "st");
		  strcat(dis_info, bl2);
		  stparf(insn, rd, DEC);
		  return dis_info;
      case ST:
		  if (rd == 0)
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "clr");
			  strcat(dis_info, bl2);
			  stparc(insn, rd, DEC);
		  }
		  else
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "st");
			  strcat(dis_info, bl2);
			  stparc(insn, rd, DEC);
		  }
		  return dis_info;
      case STB:
		  if (rd == 0)
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "clrb");
			  strcat(dis_info, bl2);
			  stparc(insn, rd, DEC);
		  }
		  else
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "stb");
			  strcat(dis_info, bl2);
			  stparc(insn, rd, DEC);
		  }
		  return dis_info;
      case STH:
		  if (rd == 0)
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "clrh");
			  strcat(dis_info, bl2);
			  stparc(insn, rd, DEC);
		  }
		  else
		  {
			  tostf(pc);
			  strcat(dis_info, bb);
			  strcat(dis_info, "sth");
			  strcat(dis_info, bl2);
			  stparc(insn, rd, DEC);
		  }
		  return dis_info;
      case STDC:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "std");
		  strcat(dis_info, bl2);
		  stparcp(insn,rd, DEC);
		  return dis_info;
      case STDF: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "std");
		  strcat(dis_info, bl2);
		  stparf(insn,rd, DEC);
		  return dis_info;
      case STCSR:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "st");
		  strcat(dis_info, bl2);
		  strcat(dis_info, "%csr, [");
		  regimm(insn, DEC, true);
		  strcat(dis_info, "]");
		  return dis_info;
      case STFSR:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "st");
		  strcat(dis_info, bl2);
		  strcat(dis_info, "%fsr, [");
		  regimm(insn, DEC, true);
		  strcat(dis_info, "]");
		  return dis_info;
      case STDCQ:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "std");
		  strcat(dis_info, bl2);
		  strcat(dis_info, "%cq, [");
		  regimm(insn, DEC, true);
		  strcat(dis_info, "]");
		  return dis_info;
      case STDFQ:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "std");
		  strcat(dis_info, bl2);
		  strcat(dis_info, "%fq, [");
		  regimm(insn, DEC, true);
		  strcat(dis_info, "]");
		  return dis_info;
      case ISTD: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "std");
		  strcat(dis_info, bl2);
		  stpar(insn,rd, DEC);
		  return dis_info;
      case STA:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "sta");
		  strcat(dis_info, bl2);
		  stpara(insn,rd, DEC);
		  return dis_info;
      case STBA:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "stba");
		  strcat(dis_info, bl2);
		  stpara(insn,rd, DEC);
		  return dis_info;
      case STHA:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "stha");
		  strcat(dis_info, bl2);
		  stpara(insn,rd, DEC);
		  return dis_info;
      case STDA:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "stda");
		  strcat(dis_info, bl2);
		  stpara(insn,rd, DEC);
		  return dis_info;
      case LDC: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ld");
		  strcat(dis_info, bl2);
		  ldparcp(insn,rd, DEC);
	      return dis_info;
      case LDF: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ld");
		  strcat(dis_info, bl2);
		  ldparf(insn,rd, DEC);
		  return dis_info;
      case LDCSR:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ld");
		  strcat(dis_info, bl2);
		  strcat(dis_info, "[");
		  regimm(insn, DEC, true);
		  strcat(dis_info, "]");
		  strcat(dis_info, ", %csr");
		  return dis_info;
      case LDFSR: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ld");
		  strcat(dis_info, bl2);
		  strcat(dis_info, "[");
		  regimm(insn, DEC, true);
		  strcat(dis_info, "]");
		  strcat(dis_info, ", %fsr");
		  return dis_info;
      case LD:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ld");
		  strcat(dis_info, bl2);
		  ldpar(insn,rd, DEC);
		  return dis_info;
      case LDUB:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldub");
		  strcat(dis_info, bl2);
		  ldpar(insn,rd, DEC);
		  return dis_info;
      case LDUH:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "lduh");
		  strcat(dis_info, bl2);
		  ldpar(insn,rd, DEC);
		  return dis_info;
      case LDDC: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldd");
		  strcat(dis_info, bl2);
		  ldparcp(insn,rd, DEC);
		  return dis_info;
      case LDDF: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldd");
		  strcat(dis_info, bl2);
		  ldparf(insn,rd, DEC);
		  return dis_info;
      case LDD:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldd");
		  strcat(dis_info, bl2);
		  ldpar(insn,rd, DEC);
		  return dis_info;
      case LDSB:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldsb");
		  strcat(dis_info, bl2);
		  ldpar(insn,rd, DEC);
		  return dis_info;
      case LDSH: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldsh");
		  strcat(dis_info, bl2);
		  ldpar(insn,rd, DEC);
		  return dis_info;
      case LDSTUB: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldstub");
		  strcat(dis_info, bl2);
		  ldpar(insn,rd, DEC);
		  return dis_info;
      case SWAP: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "swap");
		  strcat(dis_info, bl2);
		  ldpar(insn,rd, DEC);
		  return dis_info;
      case LDA: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "lda");
		  strcat(dis_info, bl2);
		  ldpara(insn,rd, DEC);
		  return dis_info;
      case LDUBA: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "lduba");
		  strcat(dis_info, bl2);
		  ldpara(insn,rd, DEC);
		  return dis_info;
      case LDUHA: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "lduha");
		  strcat(dis_info, bl2);
		  ldpara(insn,rd, DEC);
		  return dis_info;
      case LDDA: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldda");
		  strcat(dis_info, bl2);
		  ldpara(insn,rd, DEC);
		  return dis_info;
	  case LDSBA: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldsba");
		  strcat(dis_info, bl2);
		  ldpara(insn,rd, DEC);
		  return dis_info;
      case LDSHA: 
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldsha");
		  strcat(dis_info, bl2);
		  ldpara(insn,rd, DEC);
		  return dis_info;
      case LDSTUBA:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "ldstuba");
		  strcat(dis_info, bl2);
		  ldpara(insn,rd, DEC);
		  return dis_info;
      case SWAPA:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "swapa");
		  strcat(dis_info, bl2);
		  ldpara(insn,rd, DEC);
		  return dis_info;

      default:
		  tostf(pc);
		  strcat(dis_info, bb);
		  strcat(dis_info, "unknown opcode: ");
		  tost(op);
		  return dis_info;
      }
  
	default:
		tostf(pc);
		strcat(dis_info, bb);
		strcat(dis_info, "unknown opcode: ");
		tost(op);
		return dis_info;
	}


	
}

⌨️ 快捷键说明

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