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

📄 mips.igen

📁 这个是LINUX下的GDB调度工具的源码
💻 IGEN
📖 第 1 页 / 共 5 页
字号:
{  address_word mask = (WITH_TARGET_WORD_BITSIZE == 64 ? 0x7 : 0x3);  address_word reverseendian = (ReverseEndian ? -1 : 0);  address_word bigendiancpu = (BigEndianCPU ? -1 : 0);  unsigned int byte;  address_word paddr;  int uncached;  unsigned64 memval;  address_word vaddr;  vaddr = loadstore_ea (SD_, base, offset);  AddressTranslation (vaddr, isDATA, isSTORE, &paddr, &uncached, isTARGET, isREAL);  paddr = (paddr ^ (reverseendian & mask));  if (BigEndianMem != 0)    paddr &= ~access;  byte = ((vaddr & mask) ^ (bigendiancpu & mask));  memval = (rt << (byte * 8));  StoreMemory (uncached, access - (access & byte), memval, 0, paddr, vaddr, isREAL);}101000,5.BASE,5.RT,16.OFFSET:NORMAL:32::SB"sb r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_store (SD_, AccessLength_BYTE, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}111000,5.BASE,5.RT,16.OFFSET:NORMAL:32::SC"sc r<RT>, <OFFSET>(r<BASE>)"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{  unsigned32 instruction = instruction_0;  address_word base = GPR[BASE];  address_word offset = EXTEND16 (OFFSET);  {    address_word vaddr = loadstore_ea (SD_, base, offset);    address_word paddr;    int uncached;    if ((vaddr & 3) != 0)      {	SIM_CORE_SIGNAL (SD, CPU, cia, read_map, 4, vaddr, write_transfer, sim_core_unaligned_signal);      }    else      {	if (AddressTranslation(vaddr,isDATA,isSTORE,&paddr,&uncached,isTARGET,isREAL))	  {	    unsigned64 memval = 0;	    unsigned64 memval1 = 0;	    unsigned64 mask = 0x7;	    unsigned int byte;	    paddr = ((paddr & ~mask) | ((paddr & mask) ^ (ReverseEndian << 2)));	    byte = ((vaddr & mask) ^ (BigEndianCPU << 2));	    memval = ((unsigned64) GPR[RT] << (8 * byte));	    if (LLBIT)	      {		StoreMemory(uncached,AccessLength_WORD,memval,memval1,paddr,vaddr,isREAL);	      }	    GPR[RT] = LLBIT;	  }      }  }}111100,5.BASE,5.RT,16.OFFSET:NORMAL:64::SCD"scd r<RT>, <OFFSET>(r<BASE>)"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  address_word base = GPR[BASE];  address_word offset = EXTEND16 (OFFSET);  check_u64 (SD_, instruction_0);  {    address_word vaddr = loadstore_ea (SD_, base, offset);    address_word paddr;    int uncached;    if ((vaddr & 7) != 0)      {	SIM_CORE_SIGNAL (SD, CPU, cia, read_map, 8, vaddr, write_transfer, sim_core_unaligned_signal);      }    else      {	if (AddressTranslation(vaddr,isDATA,isSTORE,&paddr,&uncached,isTARGET,isREAL))	  {	    unsigned64 memval = 0;	    unsigned64 memval1 = 0;	    memval = GPR[RT];	    if (LLBIT)	      {		StoreMemory(uncached,AccessLength_DOUBLEWORD,memval,memval1,paddr,vaddr,isREAL);	      }	    GPR[RT] = LLBIT;	  }      }  }}111111,5.BASE,5.RT,16.OFFSET:NORMAL:64::SD"sd r<RT>, <OFFSET>(r<BASE>)"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  check_u64 (SD_, instruction_0);  do_store (SD_, AccessLength_DOUBLEWORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}1111,ZZ!0!1!3,5.BASE,5.RT,16.OFFSET:NORMAL:64::SDCz"sdc<ZZ> r<RT>, <OFFSET>(r<BASE>)"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{  do_store (SD_, AccessLength_DOUBLEWORD, GPR[BASE], EXTEND16 (OFFSET), COP_SD (ZZ, RT));}101100,5.BASE,5.RT,16.OFFSET:NORMAL:64::SDL"sdl r<RT>, <OFFSET>(r<BASE>)"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  check_u64 (SD_, instruction_0);  do_store_left (SD_, AccessLength_DOUBLEWORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}101101,5.BASE,5.RT,16.OFFSET:NORMAL:64::SDR"sdr r<RT>, <OFFSET>(r<BASE>)"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{  check_u64 (SD_, instruction_0);  do_store_right (SD_, AccessLength_DOUBLEWORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}101001,5.BASE,5.RT,16.OFFSET:NORMAL:32::SH"sh r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_store (SD_, AccessLength_HALFWORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}:function:::void:do_sll:int rt, int rd, int shift{  unsigned32 temp = (GPR[rt] << shift);  TRACE_ALU_INPUT2 (GPR[rt], shift);  GPR[rd] = EXTEND32 (temp);  TRACE_ALU_RESULT (GPR[rd]);}000000,00000,5.RT,5.RD,5.SHIFT,000000:SPECIAL:32::SLLa"nop":RD == 0 && RT == 0 && SHIFT == 0"sll r<RD>, r<RT>, <SHIFT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*vr4100:*vr5000:*r3900:{  /* Skip shift for NOP, so that there won't be lots of extraneous     trace output.  */  if (RD != 0 || RT != 0 || SHIFT != 0)    do_sll (SD_, RT, RD, SHIFT);}000000,00000,5.RT,5.RD,5.SHIFT,000000:SPECIAL:32::SLLb"nop":RD == 0 && RT == 0 && SHIFT == 0"ssnop":RD == 0 && RT == 0 && SHIFT == 1"sll r<RD>, r<RT>, <SHIFT>"*mips32:*mips64:{  /* Skip shift for NOP and SSNOP, so that there won't be lots of     extraneous trace output.  */  if (RD != 0 || RT != 0 || (SHIFT != 0 && SHIFT != 1))    do_sll (SD_, RT, RD, SHIFT);}:function:::void:do_sllv:int rs, int rt, int rd{  int s = MASKED (GPR[rs], 4, 0);  unsigned32 temp = (GPR[rt] << s);  TRACE_ALU_INPUT2 (GPR[rt], s);  GPR[rd] = EXTEND32 (temp);  TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,000100:SPECIAL:32::SLLV"sllv r<RD>, r<RT>, r<RS>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_sllv (SD_, RS, RT, RD);}:function:::void:do_slt:int rs, int rt, int rd{  TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]);  GPR[rd] = ((signed_word) GPR[rs] < (signed_word) GPR[rt]);  TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,101010:SPECIAL:32::SLT"slt r<RD>, r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_slt (SD_, RS, RT, RD);}:function:::void:do_slti:int rs, int rt, unsigned16 immediate{  TRACE_ALU_INPUT2 (GPR[rs], EXTEND16 (immediate));  GPR[rt] = ((signed_word) GPR[rs] < (signed_word) EXTEND16 (immediate));  TRACE_ALU_RESULT (GPR[rt]);}001010,5.RS,5.RT,16.IMMEDIATE:NORMAL:32::SLTI"slti r<RT>, r<RS>, <IMMEDIATE>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_slti (SD_, RS, RT, IMMEDIATE);}:function:::void:do_sltiu:int rs, int rt, unsigned16 immediate{  TRACE_ALU_INPUT2 (GPR[rs], EXTEND16 (immediate));  GPR[rt] = ((unsigned_word) GPR[rs] < (unsigned_word) EXTEND16 (immediate));  TRACE_ALU_RESULT (GPR[rt]);}001011,5.RS,5.RT,16.IMMEDIATE:NORMAL:32::SLTIU"sltiu r<RT>, r<RS>, <IMMEDIATE>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_sltiu (SD_, RS, RT, IMMEDIATE);}:function:::void:do_sltu:int rs, int rt, int rd{  TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]);  GPR[rd] = ((unsigned_word) GPR[rs] < (unsigned_word) GPR[rt]);  TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,101011:SPECIAL:32::SLTU"sltu r<RD>, r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_sltu (SD_, RS, RT, RD);}:function:::void:do_sra:int rt, int rd, int shift{  signed32 temp = (signed32) GPR[rt] >> shift;  if (NotWordValue (GPR[rt]))    Unpredictable ();  TRACE_ALU_INPUT2 (GPR[rt], shift);  GPR[rd] = EXTEND32 (temp);  TRACE_ALU_RESULT (GPR[rd]);}000000,00000,5.RT,5.RD,5.SHIFT,000011:SPECIAL:32::SRA"sra r<RD>, r<RT>, <SHIFT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_sra (SD_, RT, RD, SHIFT);}:function:::void:do_srav:int rs, int rt, int rd{  int s = MASKED (GPR[rs], 4, 0);  signed32 temp = (signed32) GPR[rt] >> s;  if (NotWordValue (GPR[rt]))    Unpredictable ();  TRACE_ALU_INPUT2 (GPR[rt], s);  GPR[rd] = EXTEND32 (temp);  TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,000111:SPECIAL:32::SRAV"srav r<RD>, r<RT>, r<RS>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_srav (SD_, RS, RT, RD);}:function:::void:do_srl:int rt, int rd, int shift{  unsigned32 temp = (unsigned32) GPR[rt] >> shift;  if (NotWordValue (GPR[rt]))    Unpredictable ();  TRACE_ALU_INPUT2 (GPR[rt], shift);  GPR[rd] = EXTEND32 (temp);  TRACE_ALU_RESULT (GPR[rd]);}000000,00000,5.RT,5.RD,5.SHIFT,000010:SPECIAL:32::SRL"srl r<RD>, r<RT>, <SHIFT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_srl (SD_, RT, RD, SHIFT);}:function:::void:do_srlv:int rs, int rt, int rd{  int s = MASKED (GPR[rs], 4, 0);  unsigned32 temp = (unsigned32) GPR[rt] >> s;  if (NotWordValue (GPR[rt]))    Unpredictable ();  TRACE_ALU_INPUT2 (GPR[rt], s);  GPR[rd] = EXTEND32 (temp);  TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,000110:SPECIAL:32::SRLV"srlv r<RD>, r<RT>, r<RS>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_srlv (SD_, RS, RT, RD);}000000,5.RS,5.RT,5.RD,00000,100010:SPECIAL:32::SUB"sub r<RD>, r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  if (NotWordValue (GPR[RS]) || NotWordValue (GPR[RT]))    Unpredictable ();  TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);  {    ALU32_BEGIN (GPR[RS]);    ALU32_SUB (GPR[RT]);    ALU32_END (GPR[RD]);   /* This checks for overflow.  */  }  TRACE_ALU_RESULT (GPR[RD]);}:function:::void:do_subu:int rs, int rt, int rd{  if (NotWordValue (GPR[rs]) || NotWordValue (GPR[rt]))    Unpredictable ();  TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]);  GPR[rd] = EXTEND32 (GPR[rs] - GPR[rt]);  TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,100011:SPECIAL:32::SUBU"subu r<RD>, r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_subu (SD_, RS, RT, RD);}101011,5.BASE,5.RT,16.OFFSET:NORMAL:32::SW"sw r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*r3900:*vr5000:{  do_store (SD_, AccessLength_WORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}1110,ZZ!0!1!3,5.BASE,5.RT,16.OFFSET:NORMAL:32::SWCz"swc<ZZ> r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_store (SD_, AccessLength_WORD, GPR[BASE], EXTEND16 (OFFSET), COP_SW (ZZ, RT));}101010,5.BASE,5.RT,16.OFFSET:NORMAL:32::SWL"swl r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_store_left (SD_, AccessLength_WORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}101110,5.BASE,5.RT,16.OFFSET:NORMAL:32::SWR"swr r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  do_store_right (SD_, AccessLength_WORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}000000,000000000000000,5.STYPE,001111:SPECIAL:32::SYNC"sync":STYPE == 0"sync <STYPE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  SyncOperation (STYPE);}000000,20.CODE,001100:SPECIAL:32::SYSCALL"syscall %#lx<CODE>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{  SignalException (SystemCall, instruction_0);}000000,5.RS,5.RT,10.CODE,110100:SPECIAL:32::TEQ"teq r<RS>, r<RT>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{  if ((signed_word) GPR[RS] == (signed_word) GPR[RT])    SignalException (Trap, instruction_0);}000001,5.RS,01100,16.IMMEDIATE:REGIMM:32::TEQI"teqi r<RS>, <IMMEDIATE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{  if ((signed_word) GPR[RS] == (signed_word) EXTEND16 (IMMEDIATE))    SignalException (Trap, instruction_0);}000000,5.RS,5.RT,10.CODE,110000:SPECIAL:32::TGE"tge r<RS>, r<RT>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{  if ((signed_word) GPR[RS] >= (signed_word) GPR[RT])    SignalException (Trap, instruction_0);}000001,5.RS,01000,16.IMMEDIATE:REGIMM:32::TGEI"tgei r<RS>, <IMMEDIATE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips

⌨️ 快捷键说明

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