📄 d30v-insns
字号:
# OBSOLETE // BCLR# OBSOLETE # OBSOLETE _LOGIC,00011,00,6.RA,6.RB,6.RC:LOGIC:short:iu,mu:BCLR# OBSOLETE "bclr r<RA>, r<RB>, r<RC>"# OBSOLETE WRITE32_QUEUE(Ra, Rb & ~BIT32((Rc) % 32));# OBSOLETE _LOGIC,00011,10,6.RA,6.RB,_IMM6:LOGIC:short:iu,mu:BCLR imm# OBSOLETE "bclr r<RA>, r<RB>, <imm>"# OBSOLETE WRITE32_QUEUE(Ra, Rb & ~BIT32((imm) % 32));# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // BNOT# OBSOLETE # OBSOLETE _LOGIC,00001,00,6.RA,6.RB,6.RC:LOGIC:short:iu,mu:BNOT# OBSOLETE "bnot r<RA>, r<RB>, r<RC>"# OBSOLETE WRITE32_QUEUE (Ra, Rb ^ BIT32((Rc) % 32));# OBSOLETE _LOGIC,00001,10,6.RA,6.RB,_IMM6:LOGIC:short:iu,mu:BNOT imm# OBSOLETE "bnot r<RA>, r<RB>, <imm>"# OBSOLETE WRITE32_QUEUE (Ra, Rb ^ BIT32((imm) % 32));# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // BRA# OBSOLETE # OBSOLETE _BRA,00000,00,6.**,6.**,6.RC:BRA:short:mu:BRA# OBSOLETE "bra r<RC>"# OBSOLETE nia = cia + pcdisp;# OBSOLETE _BRA,00000,10,_IMM18:BRA:short:mu:BRA imm# OBSOLETE "bra <pcdisp>"# OBSOLETE nia = cia + pcdisp;# OBSOLETE _BRA,00000,10,6.**,6.**,_IMM32:BRA:long:mu:BRA imm long# OBSOLETE "bra <pcdisp>"# OBSOLETE nia = cia + pcdisp;# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // BRATNZ# OBSOLETE # OBSOLETE _BRA,00100,01,6.RA,6.**,6.RC:BRA:short:mu:BRATNZ# OBSOLETE "bratnz r<RC>"# OBSOLETE if (*Ra != 0)# OBSOLETE nia = cia + pcdisp;# OBSOLETE _BRA,00100,11,6.RA,_IMM12:BRA:short:mu:BRATNZ imm# OBSOLETE "bratnz <pcdisp>"# OBSOLETE if (*Ra != 0)# OBSOLETE nia = cia + pcdisp;# OBSOLETE _BRA,00100,11,6.RA,6.**,_IMM32:BRA:long:mu:BRATNZ imm long# OBSOLETE "bratnz <pcdisp>"# OBSOLETE if (*Ra != 0)# OBSOLETE nia = cia + pcdisp;# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // BRATZR# OBSOLETE # OBSOLETE _BRA,00100,00,6.RA,6.**,6.RC:BRA:short:mu:BRATZR# OBSOLETE "bratzr r<RC>"# OBSOLETE if (val_Ra == 0)# OBSOLETE nia = cia + pcdisp;# OBSOLETE _BRA,00100,10,6.RA,_IMM12:BRA:short:mu:BRATZR imm# OBSOLETE "bratzr <pcdisp>"# OBSOLETE if (val_Ra == 0)# OBSOLETE nia = cia + pcdisp;# OBSOLETE _BRA,00100,10,6.RA,6.**,_IMM32:BRA:long:mu:BRATZR imm long# OBSOLETE "bratzr <pcdisp>"# OBSOLETE if (val_Ra == 0)# OBSOLETE nia = cia + pcdisp;# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // BSET# OBSOLETE # OBSOLETE _LOGIC,00010,00,6.RA,6.RB,6.RC:LOGIC:short:iu,mu:BSET# OBSOLETE "bset r<RA>, r<RB>, r<RC>"# OBSOLETE WRITE32_QUEUE (Ra, Rb | BIT32((Rc) % 32));# OBSOLETE _LOGIC,00010,10,6.RA,6.RB,_IMM6:LOGIC:short:iu,mu:BSET imm# OBSOLETE "bset r<RA>, r<RB>, <imm>"# OBSOLETE WRITE32_QUEUE (Ra, Rb | BIT32((imm) % 32));# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // BSR# OBSOLETE # OBSOLETE _BRA,00010,00,6.**,6.**,6.RC:BRA:short:mu:BSR# OBSOLETE "bsr r<RC>"# OBSOLETE if (cia == RPT_E && PSW_VAL (PSW_RP))# OBSOLETE WRITE32_QUEUE (&GPR[62], RPT_S);# OBSOLETE else# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + 8);# OBSOLETE nia = cia + pcdisp;# OBSOLETE if (TRACE_CALL_P)# OBSOLETE TRACE_ACTION |= TRACE_ACTION_CALL;# OBSOLETE _BRA,00010,10,_IMM18:BRA:short:mu:BSR imm# OBSOLETE "bsr <pcdisp>"# OBSOLETE if (cia == RPT_E && PSW_VAL (PSW_RP))# OBSOLETE WRITE32_QUEUE (&GPR[62], RPT_S);# OBSOLETE else# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + 8);# OBSOLETE nia = cia + pcdisp;# OBSOLETE if (TRACE_CALL_P)# OBSOLETE TRACE_ACTION |= TRACE_ACTION_CALL;# OBSOLETE _BRA,00010,10,6.**,6.**,_IMM32:BRA:long:mu:BSR imm long# OBSOLETE "bsr <pcdisp>"# OBSOLETE if (cia == RPT_E && PSW_VAL (PSW_RP))# OBSOLETE WRITE32_QUEUE (&GPR[62], RPT_S);# OBSOLETE else# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + 8);# OBSOLETE nia = cia + pcdisp;# OBSOLETE if (TRACE_CALL_P)# OBSOLETE TRACE_ACTION |= TRACE_ACTION_CALL;# OBSOLETE # OBSOLETE # OBSOLETE // BSRTNZ# OBSOLETE # OBSOLETE _BRA,00110,01,6.RA,6.**,6.RC:BRA:short:mu:BSRTNZ# OBSOLETE "bsrtnz r<RC>"# OBSOLETE if (val_Ra != 0) {# OBSOLETE if (cia == RPT_E && PSW_VAL (PSW_RP))# OBSOLETE WRITE32_QUEUE (&GPR[62], RPT_S);# OBSOLETE else# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + 8);# OBSOLETE nia = cia + pcdisp;# OBSOLETE if (TRACE_CALL_P)# OBSOLETE TRACE_ACTION |= TRACE_ACTION_CALL;# OBSOLETE }# OBSOLETE # OBSOLETE _BRA,00110,11,6.RA,_IMM12:BRA:short:mu:BSRTNZ imm# OBSOLETE "bsrtnz <pcdisp>"# OBSOLETE if (val_Ra != 0) {# OBSOLETE if (cia == RPT_E && PSW_VAL (PSW_RP))# OBSOLETE WRITE32_QUEUE (&GPR[62], RPT_S);# OBSOLETE else# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + 8);# OBSOLETE nia = cia + pcdisp;# OBSOLETE if (TRACE_CALL_P)# OBSOLETE TRACE_ACTION |= TRACE_ACTION_CALL;# OBSOLETE }# OBSOLETE # OBSOLETE _BRA,00110,11,6.RA,6.**,_IMM32:BRA:long:mu:BSRTNZ imm long# OBSOLETE "bsrtnz <pcdisp>"# OBSOLETE if (val_Ra != 0) {# OBSOLETE if (cia == RPT_E && PSW_VAL (PSW_RP))# OBSOLETE WRITE32_QUEUE (&GPR[62], RPT_S);# OBSOLETE else# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + 8);# OBSOLETE nia = cia + pcdisp;# OBSOLETE if (TRACE_CALL_P)# OBSOLETE TRACE_ACTION |= TRACE_ACTION_CALL;# OBSOLETE }# OBSOLETE # OBSOLETE # OBSOLETE // BSRTZR# OBSOLETE # OBSOLETE _BRA,00110,00,6.RA,6.**,6.RC:BRA:short:mu:BSRTZR# OBSOLETE "bsrtzr r<RC>"# OBSOLETE if (val_Ra == 0) {# OBSOLETE if (cia == RPT_E && PSW_VAL (PSW_RP))# OBSOLETE WRITE32_QUEUE (&GPR[62], RPT_S);# OBSOLETE else# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + 8);# OBSOLETE nia = cia + pcdisp;# OBSOLETE if (TRACE_CALL_P)# OBSOLETE TRACE_ACTION |= TRACE_ACTION_CALL;# OBSOLETE }# OBSOLETE # OBSOLETE _BRA,00110,10,6.RA,_IMM12:BRA:short:mu:BSRTZR imm# OBSOLETE "bsrtzr <pcdisp>"# OBSOLETE if (val_Ra == 0) {# OBSOLETE if (cia == RPT_E && PSW_VAL (PSW_RP))# OBSOLETE WRITE32_QUEUE (&GPR[62], RPT_S);# OBSOLETE else# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + 8);# OBSOLETE nia = cia + pcdisp;# OBSOLETE if (TRACE_CALL_P)# OBSOLETE TRACE_ACTION |= TRACE_ACTION_CALL;# OBSOLETE }# OBSOLETE # OBSOLETE _BRA,00110,10,6.RA,6.**,_IMM32:BRA:long:mu:BSRTZR imm long# OBSOLETE "bsrtzr <pcdisp>"# OBSOLETE if (val_Ra == 0) {# OBSOLETE if (cia == RPT_E && PSW_VAL (PSW_RP))# OBSOLETE WRITE32_QUEUE (&GPR[62], RPT_S);# OBSOLETE else# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + 8);# OBSOLETE nia = cia + pcdisp;# OBSOLETE if (TRACE_CALL_P)# OBSOLETE TRACE_ACTION |= TRACE_ACTION_CALL;# OBSOLETE }# OBSOLETE # OBSOLETE # OBSOLETE // BTST# OBSOLETE # OBSOLETE _LOGIC,00000,00,***,3.FA,6.RB,6.RC:LOGIC:short:iu,mu:BTST# OBSOLETE "btst f<FA>, r<RB>, r<RC>"# OBSOLETE int bit = (Rc) % 32;# OBSOLETE PSW_FLAG_SET_QUEUE(FA, MASKED32(Rb, bit, bit));# OBSOLETE _LOGIC,00000,10,***,3.FA,6.RB,_IMM6:LOGIC:short:iu,mu:BTST imm# OBSOLETE "btst f<FA>, r<RB>, <imm>"# OBSOLETE int bit = imm % 32;# OBSOLETE PSW_FLAG_SET_QUEUE(FA, MASKED32(Rb, bit, bit));# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // CMPcc# OBSOLETE # OBSOLETE void::function::do_cmp_cc:int cc, int fa, signed32 rb, signed32 rc# OBSOLETE int value = 0;# OBSOLETE switch (cc) {# OBSOLETE case 0: /* EQ */# OBSOLETE value = (rb == rc);# OBSOLETE break;# OBSOLETE case 1: /* NE */# OBSOLETE value = (rb != rc);# OBSOLETE break;# OBSOLETE case 2: /* GT */# OBSOLETE value = (rb > rc);# OBSOLETE break;# OBSOLETE case 3: /* GE */# OBSOLETE value = (rb >= rc);# OBSOLETE break;# OBSOLETE case 4: /* LT */# OBSOLETE value = (rb < rc);# OBSOLETE break;# OBSOLETE case 5: /* LE */# OBSOLETE value = (rb <= rc);# OBSOLETE break;# OBSOLETE case 6: /* PS */# OBSOLETE value = ((rb >= 0) && (rc >= 0));# OBSOLETE break;# OBSOLETE case 7: /* NG */# OBSOLETE value = ((rb < 0) && (rc < 0));# OBSOLETE break;# OBSOLETE default:# OBSOLETE sim_engine_abort (SD, CPU, cia, "do_cmp_cc - internal error - bad switch (%d)", cc);# OBSOLETE }# OBSOLETE PSW_FLAG_SET_QUEUE(fa, value);# OBSOLETE # OBSOLETE ::%s::ccc:int ccc# OBSOLETE switch (ccc)# OBSOLETE {# OBSOLETE case 0: return "eq";# OBSOLETE case 1: return "ne";# OBSOLETE case 2: return "gt";# OBSOLETE case 3: return "ge";# OBSOLETE case 4: return "lt";# OBSOLETE case 5: return "le";# OBSOLETE case 6: return "ps";# OBSOLETE case 7: return "ng";# OBSOLETE default: return "?";# OBSOLETE }# OBSOLETE # OBSOLETE _LOGIC,01100,00,ccc,3.FA,6.RB,6.RC:LOGIC:short:iu,mu:CMPcc# OBSOLETE "cmp%s<ccc> f<FA>, r<RB>, r<RC>"# OBSOLETE do_cmp_cc(_SD, ccc, FA, Rb, Rc);# OBSOLETE _LOGIC,01100,10,ccc,3.FA,6.RB,_IMM6:LOGIC:short:iu,mu:CMPcc imm# OBSOLETE "cmp%s<ccc> f<FA>, r<RB>, <imm>"# OBSOLETE do_cmp_cc(_SD, ccc, FA, Rb, imm);# OBSOLETE _LOGIC,01100,10,ccc,3.FA,6.RB,_IMM32:LOGIC:long:iu,mu:CMPcc imm long# OBSOLETE "cmp%s<ccc> f<FA>, r<RB>, <imm>"# OBSOLETE do_cmp_cc(_SD, ccc, FA, Rb, imm);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // CMPUcc# OBSOLETE # OBSOLETE void::function::do_cmpu_cc:int cc, int fa, unsigned32 rb, unsigned32 rc# OBSOLETE int value = 0;# OBSOLETE switch (cc) {# OBSOLETE case 2: /* GT */# OBSOLETE value = (rb > rc);# OBSOLETE break;# OBSOLETE case 3: /* GE */# OBSOLETE value = (rb >= rc);# OBSOLETE break;# OBSOLETE case 4: /* LT */# OBSOLETE value = (rb < rc);# OBSOLETE break;# OBSOLETE case 5: /* LE */# OBSOLETE value = (rb <= rc);# OBSOLETE break;# OBSOLETE default:# OBSOLETE sim_engine_abort (SD, CPU, cia, "do_cmpu_cc - internal error - bad switch (%d)", cc);# OBSOLETE }# OBSOLETE PSW_FLAG_SET_QUEUE(fa, value);# OBSOLETE # OBSOLETE _LOGIC,01101,00,ccc,3.FA,6.RB,6.RC:LOGIC:short:iu,mu:CMPUcc# OBSOLETE "cmpu%s<ccc> f<FA>, r<RB>, r<RC>"# OBSOLETE do_cmpu_cc(_SD, ccc, FA, Rb, Rc);# OBSOLETE _LOGIC,01101,10,ccc,3.FA,6.RB,_IMM6:LOGIC:short:iu,mu:CMPUcc imm# OBSOLETE "cmpu%s<ccc> f<FA>, r<RB>, <imm>"# OBSOLETE do_cmpu_cc(_SD, ccc, FA, Rb, imm_6u);# OBSOLETE _LOGIC,01101,10,ccc,3.FA,6.RB,_IMM32:LOGIC:long:iu,mu:CMPUcc imm long# OBSOLETE "cmpu%s<ccc> f<FA>, r<RB>, <imm>"# OBSOLETE do_cmpu_cc(_SD, ccc, FA, Rb, imm);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // DBRA# OBSOLETE # OBSOLETE void::function::do_dbra:address_word pcdisp, unsigned32 ra# OBSOLETE PSW_SET_QUEUE (PSW_RP, 1);# OBSOLETE WRITE32_QUEUE (&RPT_C, 1);# OBSOLETE WRITE32_QUEUE (&RPT_S, cia + pcdisp);# OBSOLETE WRITE32_QUEUE (&RPT_E, cia + (ra & ~0x7));# OBSOLETE # OBSOLETE _BRA,10000,00,6.RA,6.**,6.RC:BRA:short:mu:DBRA# OBSOLETE "dbra r<RA>, r<RC>"# OBSOLETE do_dbra(_SD, pcdisp, val_Ra);# OBSOLETE _BRA,10000,10,6.RA,_IMM12:BRA:short:mu:DBRA imm# OBSOLETE "dbra r<RA>, <pcdisp>"# OBSOLETE do_dbra(_SD, pcdisp, val_Ra);# OBSOLETE _BRA,10000,10,6.RA,6.**,_IMM32:BRA:long:mu:DBRA imm long# OBSOLETE "dbra r<RA>, <pcdisp>"# OBSOLETE do_dbra(_SD, pcdisp, val_Ra);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // DBRAI# OBSOLETE # OBSOLETE void::function::do_dbrai:address_word pcdisp, unsigned32 imm# OBSOLETE PSW_SET_QUEUE (PSW_RP, 1);# OBSOLETE WRITE32_QUEUE (&RPT_C, 1);# OBSOLETE WRITE32_QUEUE (&RPT_S, cia + pcdisp);# OBSOLETE WRITE32_QUEUE (&RPT_E, cia + (imm << 3));# OBSOLETE # OBSOLETE _BRA,10100,00,6.IMM_6,6.**,6.RC:BRA:short:mu:DBRAI# OBSOLETE "dbrai <IMM_6>, r<RC>"# OBSOLETE do_dbrai(_SD, pcdisp, IMM_6);# OBSOLETE _BRA,10100,10,6.IMM_6,_IMM12:BRA:short:mu:DBRAI imm# OBSOLETE "dbrai <IMM_6>, <pcdisp>"# OBSOLETE do_dbrai(_SD, pcdisp, IMM_6);# OBSOLETE _BRA,10100,10,6.IMM_6,6.**,_IMM32:BRA:long:mu:DBRAI imm long# OBSOLETE "dbrai <IMM_6>, <pcdisp>"# OBSOLETE do_dbrai(_SD, pcdisp, IMM_6);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // DBSR# OBSOLETE # OBSOLETE void::function::do_dbsr:address_word pcdisp, unsigned32 ra# OBSOLETE PSW_SET_QUEUE (PSW_RP, 1);# OBSOLETE WRITE32_QUEUE (&RPT_C, 1);# OBSOLETE WRITE32_QUEUE (&RPT_S, cia + pcdisp);# OBSOLETE WRITE32_QUEUE (&RPT_E, cia + ra);# OBSOLETE WRITE32_QUEUE (&GPR[62], cia + ra + 8);# OBSOLETE # OBSOLETE _BRA,10010,00,6.RA,6.**,6.RC:BRA:short:mu:DBSR# OBSOLETE "dbsr r<RA>, r<RC>"# OBSOLETE do_dbsr(_SD, pcdisp, val_Ra);# OBSOLETE _BRA,10010,10,6.RA,_IMM12:BRA:short:mu:DBSR imm# OBSOLETE "dbsr r<RA>, <pcdisp>"# OBSOLETE do_dbsr(_SD, pcdisp, val_Ra);# OBSOLETE _BRA,10010,10,6.RA,6.**,_IMM32:BRA:long:mu:DBSR imm long# OBSOLETE "dbsr r<RA>, <pcdisp>"# OBSOLETE do_dbsr(_SD, pcdisp, val_Ra);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // DBSRI# OBSOLETE # OBSOLETE void::function::do_dbsri:address_word pcdisp, unsigned32 imm# OBSOLETE PSW_SET_QUEUE (PSW_RP, 1);# OBSOLETE WRITE32_QUEUE (&RPT_C, 1);# OBSOLETE WRITE32_QUEUE (&RPT_S, cia + pcdisp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -