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

📄 mips.igen

📁 gdb-6.0 linux 下的调试工具
💻 IGEN
📖 第 1 页 / 共 5 页
字号:
    NULLIFY_NEXT_INSTRUCTION ();}000111,5.RS,00000,16.OFFSET:NORMAL:32::BGTZ"bgtz r<RS>, <OFFSET>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  if ((signed_word) GPR[RS] > 0)    {      DELAY_SLOT (NIA + offset);    }}010111,5.RS,00000,16.OFFSET:NORMAL:32::BGTZL"bgtzl r<RS>, <OFFSET>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  /* NOTE: The branch occurs AFTER the next instruction has been     executed */  if ((signed_word) GPR[RS] > 0)    {      DELAY_SLOT (NIA + offset);    }  else    NULLIFY_NEXT_INSTRUCTION ();}000110,5.RS,00000,16.OFFSET:NORMAL:32::BLEZ"blez r<RS>, <OFFSET>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  /* NOTE: The branch occurs AFTER the next instruction has been     executed */  if ((signed_word) GPR[RS] <= 0)    {      DELAY_SLOT (NIA + offset);    }}010110,5.RS,00000,16.OFFSET:NORMAL:32::BLEZL"bgezl r<RS>, <OFFSET>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  if ((signed_word) GPR[RS] <= 0)    {      DELAY_SLOT (NIA + offset);    }  else    NULLIFY_NEXT_INSTRUCTION ();}000001,5.RS,00000,16.OFFSET:REGIMM:32::BLTZ"bltz r<RS>, <OFFSET>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  if ((signed_word) GPR[RS] < 0)    {      DELAY_SLOT (NIA + offset);    }}000001,5.RS!31,10000,16.OFFSET:REGIMM:32::BLTZAL"bltzal r<RS>, <OFFSET>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  if (RS == 31)    Unpredictable ();  RA = (CIA + 8);  /* NOTE: The branch occurs AFTER the next instruction has been     executed */  if ((signed_word) GPR[RS] < 0)    {      DELAY_SLOT (NIA + offset);    }}000001,5.RS!31,10010,16.OFFSET:REGIMM:32::BLTZALL"bltzall r<RS>, <OFFSET>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  if (RS == 31)    Unpredictable ();  RA = (CIA + 8);  if ((signed_word) GPR[RS] < 0)    {      DELAY_SLOT (NIA + offset);    }  else    NULLIFY_NEXT_INSTRUCTION ();}000001,5.RS,00010,16.OFFSET:REGIMM:32::BLTZL"bltzl r<RS>, <OFFSET>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  /* NOTE: The branch occurs AFTER the next instruction has been     executed */  if ((signed_word) GPR[RS] < 0)    {      DELAY_SLOT (NIA + offset);    }  else    NULLIFY_NEXT_INSTRUCTION ();}000101,5.RS,5.RT,16.OFFSET:NORMAL:32::BNE"bne r<RS>, r<RT>, <OFFSET>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  if ((signed_word) GPR[RS] != (signed_word) GPR[RT])    {      DELAY_SLOT (NIA + offset);    }}010101,5.RS,5.RT,16.OFFSET:NORMAL:32::BNEL"bnel r<RS>, r<RT>, <OFFSET>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  address_word offset = EXTEND16 (OFFSET) << 2;  if ((signed_word) GPR[RS] != (signed_word) GPR[RT])    {      DELAY_SLOT (NIA + offset);    }  else    NULLIFY_NEXT_INSTRUCTION ();}000000,20.CODE,001101:SPECIAL:32::BREAK"break %#lx<CODE>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  /* Check for some break instruction which are reserved for use by the simulator.  */  unsigned int break_code = instruction_0 & HALT_INSTRUCTION_MASK;  if (break_code == (HALT_INSTRUCTION  & HALT_INSTRUCTION_MASK) ||      break_code == (HALT_INSTRUCTION2 & HALT_INSTRUCTION_MASK))    {      sim_engine_halt (SD, CPU, NULL, cia,                       sim_exited, (unsigned int)(A0 & 0xFFFFFFFF));    }  else if (break_code == (BREAKPOINT_INSTRUCTION  & HALT_INSTRUCTION_MASK) ||           break_code == (BREAKPOINT_INSTRUCTION2 & HALT_INSTRUCTION_MASK))    {      if (STATE & simDELAYSLOT)        PC = cia - 4; /* reference the branch instruction */      else        PC = cia;      SignalException (BreakPoint, instruction_0);    }  else    {      /* If we get this far, we're not an instruction reserved by the sim.  Raise	 the exception. */      SignalException (BreakPoint, instruction_0);    }}011100,5.RS,5.RT,5.RD,00000,100001:SPECIAL2:32::CLO"clo r<RD>, r<RS>"*mips32:*mips64:*vr5500:{  unsigned32 temp = GPR[RS];  unsigned32 i, mask;  if (RT != RD)    Unpredictable ();  if (NotWordValue (GPR[RS]))    Unpredictable ();  TRACE_ALU_INPUT1 (GPR[RS]);  for (mask = ((unsigned32)1<<31), i = 0; i < 32; ++i)    {      if ((temp & mask) == 0)	break;      mask >>= 1;    }  GPR[RD] = EXTEND32 (i);  TRACE_ALU_RESULT (GPR[RD]);}011100,5.RS,5.RT,5.RD,00000,100000:SPECIAL2:32::CLZ"clz r<RD>, r<RS>"*mips32:*mips64:*vr5500:{  unsigned32 temp = GPR[RS];  unsigned32 i, mask;  if (RT != RD)    Unpredictable ();  if (NotWordValue (GPR[RS]))    Unpredictable ();  TRACE_ALU_INPUT1 (GPR[RS]);  for (mask = ((unsigned32)1<<31), i = 0; i < 32; ++i)    {      if ((temp & mask) != 0)	break;      mask >>= 1;    }  GPR[RD] = EXTEND32 (i);  TRACE_ALU_RESULT (GPR[RD]);}000000,5.RS,5.RT,5.RD,00000,101100:SPECIAL:64::DADD"dadd r<RD>, r<RS>, r<RT>"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  check_u64 (SD_, instruction_0);  TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);  {    ALU64_BEGIN (GPR[RS]);    ALU64_ADD (GPR[RT]);    ALU64_END (GPR[RD]);   /* This checks for overflow.  */  }  TRACE_ALU_RESULT (GPR[RD]);}011000,5.RS,5.RT,16.IMMEDIATE:NORMAL:64::DADDI"daddi r<RT>, r<RS>, <IMMEDIATE>"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  check_u64 (SD_, instruction_0);  TRACE_ALU_INPUT2 (GPR[RS], EXTEND16 (IMMEDIATE));  {    ALU64_BEGIN (GPR[RS]);    ALU64_ADD (EXTEND16 (IMMEDIATE));    ALU64_END (GPR[RT]);   /* This checks for overflow.  */  }  TRACE_ALU_RESULT (GPR[RT]);}:function:::void:do_daddiu:int rs, int rt, unsigned16 immediate{  TRACE_ALU_INPUT2 (GPR[rs], EXTEND16 (immediate));  GPR[rt] = GPR[rs] + EXTEND16 (immediate);  TRACE_ALU_RESULT (GPR[rt]);}011001,5.RS,5.RT,16.IMMEDIATE:NORMAL:64::DADDIU"daddiu r<RT>, r<RS>, <IMMEDIATE>"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  check_u64 (SD_, instruction_0);  do_daddiu (SD_, RS, RT, IMMEDIATE);}:function:::void:do_daddu:int rs, int rt, int rd{  TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]);  GPR[rd] = GPR[rs] + GPR[rt];  TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,101101:SPECIAL:64::DADDU"daddu r<RD>, r<RS>, r<RT>"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  check_u64 (SD_, instruction_0);  do_daddu (SD_, RS, RT, RD);}011100,5.RS,5.RT,5.RD,00000,100101:SPECIAL2:64::DCLO"dclo r<RD>, r<RS>"*mips64:*vr5500:{  unsigned64 temp = GPR[RS];  unsigned32 i;  unsigned64 mask;  check_u64 (SD_, instruction_0);  if (RT != RD)    Unpredictable ();  TRACE_ALU_INPUT1 (GPR[RS]);  for (mask = ((unsigned64)1<<63), i = 0; i < 64; ++i)    {      if ((temp & mask) == 0)	break;      mask >>= 1;    }  GPR[RD] = EXTEND32 (i);  TRACE_ALU_RESULT (GPR[RD]);}011100,5.RS,5.RT,5.RD,00000,100100:SPECIAL2:64::DCLZ"dclz r<RD>, r<RS>"*mips64:*vr5500:{  unsigned64 temp = GPR[RS];  unsigned32 i;  unsigned64 mask;  check_u64 (SD_, instruction_0);  if (RT != RD)    Unpredictable ();  TRACE_ALU_INPUT1 (GPR[RS]);  for (mask = ((unsigned64)1<<63), i = 0; i < 64; ++i)    {      if ((temp & mask) != 0)	break;      mask >>= 1;    }  GPR[RD] = EXTEND32 (i);  TRACE_ALU_RESULT (GPR[RD]);}:function:::void:do_ddiv:int rs, int rt{  check_div_hilo (SD_, HIHISTORY, LOHISTORY);  TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]);  {    signed64 n = GPR[rs];    signed64 d = GPR[rt];    signed64 hi;    signed64 lo;    if (d == 0)      {	lo = SIGNED64 (0x8000000000000000);	hi = 0;      }    else if (d == -1 && n == SIGNED64 (0x8000000000000000))      {	lo = SIGNED64 (0x8000000000000000);	hi = 0;      }    else      {	lo = (n / d);	hi = (n % d);      }    HI = hi;    LO = lo;  }  TRACE_ALU_RESULT2 (HI, LO);}000000,5.RS,5.RT,0000000000,011110:SPECIAL:64::DDIV"ddiv r<RS>, r<RT>"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  check_u64 (SD_, instruction_0);  do_ddiv (SD_, RS, RT);}:function:::void:do_ddivu:int rs, int rt{  check_div_hilo (SD_, HIHISTORY, LOHISTORY);  TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]);  {    unsigned64 n = GPR[rs];    unsigned64 d = GPR[rt];    unsigned64 hi;    unsigned64 lo;    if (d == 0)      {	lo = SIGNED64 (0x8000000000000000);	hi = 0;      }    else      {	lo = (n / d);	hi = (n % d);      }    HI = hi;    LO = lo;  }  TRACE_ALU_RESULT2 (HI, LO);}000000,5.RS,5.RT,0000000000,011111:SPECIAL:64::DDIVU"ddivu r<RS>, r<RT>"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  check_u64 (SD_, instruction_0);  do_ddivu (SD_, RS, RT);}:function:::void:do_div:int rs, int rt{  check_div_hilo (SD_, HIHISTORY, LOHISTORY);  TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]);  {    signed32 n = GPR[rs];    signed32 d = GPR[rt];    if (d == 0)      {	LO = EXTEND32 (0x80000000);	HI = EXTEND32 (0);      }    else if (n == SIGNED32 (0x80000000) && d == -1)      {	LO = EXTEND32 (0x80000000);	HI = EXTEND32 (0);      }    else      {	LO = EXTEND32 (n / d);	HI = EXTEND32 (n % d);      }  }  TRACE_ALU_RESULT2 (HI, LO);}000000,5.RS,5.RT,0000000000,011010:SPECIAL:32::DIV"div r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_div (SD_, RS, RT);}:function:::void:do_divu:int rs, int rt{  check_div_hilo (SD_, HIHISTORY, LOHISTORY);  TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]);  {    unsigned32 n = GPR[rs];    unsigned32 d = GPR[rt];    if (d == 0)      {	LO = EXTEND32 (0x80000000);	HI = EXTEND32 (0);      }    else      {	LO = EXTEND32 (n / d);	HI = EXTEND32 (n % d);      }  }  TRACE_ALU_RESULT2 (HI, LO);}000000,5.RS,5.RT,0000000000,011011:SPECIAL:32::DIVU"divu r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_divu (SD_, RS, RT);}:function:::void:do_dmultx:int rs, int rt, int rd, int signed_p{  unsigned64 lo;  unsigned64 hi;  unsigned64 m00;  unsigned64 m01;  unsigned64 m10;  unsigned64 m11;  unsigned64 mid;  int sign;  unsigned64 op1 = GPR[rs];  unsigned64 op2 = GPR[rt];  check_mult_hilo (SD_, HIHISTORY, LOHISTORY);  TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]);  /* make signed multiply unsigned */  sign = 0;  if (signed_p)    {      if ((signed64) op1 < 0)	{	  op1 = - op1;	  ++sign;	}      if ((signed64) op2 < 0)	{	  op2 = - op2;	  ++sign;	}    }  /* multiply out the 4 sub products */  m00 = ((unsigned64) VL4_8 (op1) * (unsigned64) VL4_8 (op2));  m10 = ((unsigned64) VH4_8 (op1) * (unsigned64) VL4_8 (op2));  m01 = ((unsigned64) VL4_8 (op1) * (unsigned64) VH4_8 (op2));  m11 = ((unsigned64) VH4_8 (op1) * (unsigned64) VH4_8 (op2));  /* add the products */  mid = ((unsigned64) VH4_8 (m00)	 + (unsigned64) VL4_8 (m10)	 + (unsigned64) VL4_8 (m01));  lo = U8_4 (mid, m00);  hi = (m11	+ (unsigned64) VH4_8 (mid)	+ (unsigned64) VH4_8 (m01)	+ (unsigned64) VH4_8 (m10));  /* fix the sign */  if (sign & 1)    {      lo = -lo;      if (lo == 0)	hi = -hi;      else	hi = -hi - 1;    }  /* save the result HI/LO (and a gpr) */  LO = lo;  HI = hi;  if (rd != 0)    GPR[rd] = lo;

⌨️ 快捷键说明

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