📄 dbgcmd.c
字号:
raw[1] = RAM[current_byte];
current_byte++;
printf("%d\n",(S1)RAM[current_byte]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case LWI: /* LWI $r1, word constant BBW */
{
S2 *si;
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf(" %s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
raw[2] = RAM[current_byte];
current_byte++;
raw[3] = RAM[current_byte];
si = ((S2*)(&RAM[current_byte-1]));
pS2(*si); printf("\n");
printRawBytes(raw,4);
}break;
case LDI: /* LDI $r1, dword constant BBD */
{
S4 *li;
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
raw[2] = RAM[current_byte];
current_byte++;
raw[3] = RAM[current_byte];
current_byte++;
raw[4] = RAM[current_byte];
current_byte++;
raw[5] = RAM[current_byte];
li = (S4 *)&RAM[current_byte-3];
pS4(*li); printf("\n");
printRawBytes(raw,6);
}break;
case LQI: /* LQI $r1, qword constant BBQ*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
raw[2] = RAM[current_byte];
current_byte++;
raw[3] = RAM[current_byte];
current_byte++;
raw[4] = RAM[current_byte];
current_byte++;
raw[5] = RAM[current_byte];
current_byte++;
raw[6] = RAM[current_byte];
current_byte++;
raw[7] = RAM[current_byte];
current_byte++;
raw[8] = RAM[current_byte];
current_byte++;
raw[9] = RAM[current_byte];
pS8(*((S8 *)&RAM[current_byte-7]));
printf("\n");
printRawBytes(raw,10);
}break;
case LF1I: /* LF1I $f, float */
{
F4 *fi;
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rf_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
raw[2] = RAM[current_byte];
current_byte++;
raw[3] = RAM[current_byte];
current_byte++;
raw[4] = RAM[current_byte];
current_byte++;
raw[5] = RAM[current_byte];
fi = (F4 *)&RAM[current_byte-3];
printf("%g\n",*fi);
printRawBytes(raw,6);
}break;
case LF2I: /* LF2I $d, double */
{
F8 *di;
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rd_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
raw[2] = RAM[current_byte];
current_byte++;
raw[3] = RAM[current_byte];
current_byte++;
raw[4] = RAM[current_byte];
current_byte++;
raw[5] = RAM[current_byte];
current_byte++;
raw[6] = RAM[current_byte];
current_byte++;
raw[7] = RAM[current_byte];
current_byte++;
raw[8] = RAM[current_byte];
current_byte++;
raw[9] = RAM[current_byte];
di = (F8 *)&RAM[current_byte-7];
printf("%g\n",*di);
printRawBytes(raw,10);
}break;
case LAD: /* LAD $r1, address = BBQ */
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
raw[2] = RAM[current_byte];
current_byte++;
raw[3] = RAM[current_byte];
current_byte++;
raw[4] = RAM[current_byte];
current_byte++;
raw[5] = RAM[current_byte];
current_byte++;
raw[6] = RAM[current_byte];
current_byte++;
raw[7] = RAM[current_byte];
current_byte++;
raw[8] = RAM[current_byte];
current_byte++;
raw[9] = RAM[current_byte];
pU8(*((U8 *)&RAM[current_byte-7]));
printf("\n");
printRawBytes(raw,10);
}break;
case LAI: /* LAI $r1, $r2, qword BBBQ*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
current_byte++;
raw[3] = RAM[current_byte];
current_byte++;
raw[4] = RAM[current_byte];
current_byte++;
raw[5] = RAM[current_byte];
current_byte++;
raw[6] = RAM[current_byte];
current_byte++;
raw[7] = RAM[current_byte];
current_byte++;
raw[8] = RAM[current_byte];
current_byte++;
raw[9] = RAM[current_byte];
current_byte++;
raw[10] = RAM[current_byte];
pS8(*((S8 *)&RAM[current_byte-7]));
printf("\n");
printRawBytes(raw,11);
}break;
case LB: /* LB $r1,$r2 BBB */
case LW:
case LD:
case LQ:
case SB: /* SB $r1,$r2 BBB*/
case SW:
case SD:
case SQ:
case MOV: /* MOV $r1, $r2 BBB */
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case LF1: /* LF1 $f, $r */
case SF1:
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rf_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case LF2: /* LF2 $d, $r */
case SF2:
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rd_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case MOVF: /*MOVF $f1, $f2*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rf_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",Rf_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case MOVD: /*MOVD $d1, $d2*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rd_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",Rd_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case PUSHB: /* PUSHB $r1 BB */
case PUSHW:
case PUSHD:
case PUSHQ:
case POPB:
case POPW:
case POPD:
case POPQ:
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
printRawBytes(raw,2);
}break;
case PUSHF1: /* PUSHF1 $f */
case POPF1:
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s\n",Rf_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
printRawBytes(raw,2);
}break;
case PUSHF2: /* PUSHF2 $d */
case POPF2:
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s\n",Rd_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
printRawBytes(raw,2);
}break;
case JMP: /* JMP $r1 */
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
printRawBytes(raw,2);
}break;
case JE: /*JE $r1, $r2, $r3 BBBB */
case JNE:
case SLT:
case AND: /* AND $r1, $r2, $r3 */
case OR:
case XOR:
case BT:
case SRA: /*SRA $r1, $r2, $r3 BBBB */
case SRL:
case SL:
case ADD: /* ADD $r1, $r2, $r3 */
case SUB:
case MULT:
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[3] = RAM[current_byte];
printRawBytes(raw,4);
}break;
case INT: /* INT #vector BB */
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%u\n",RAM[current_byte]);
raw[1] = RAM[current_byte];
printRawBytes(raw,2);
}break;
case EI: /* EI B */
case DI:
case HALT:
case NOP:
{
printf("%s\n",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
printRawBytes(raw,1);
}break;
case NOT: /* NOT $r1, $r2 */
case BS:
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case DIV: /* DIV $r1, $r2, $r3, $r4 */
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[3] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[4] = RAM[current_byte];
printRawBytes(raw,5);
}break;
case CAST_IF: /* CAST_IF $r, $f BBB*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",Rf_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case CAST_ID: /* CAST_ID $r, $d BBB*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",R_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",Rd_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case CAST_FI: /* CAST_FI $f, $r BBB*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rf_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case CAST_FD: /* CAST_FD $f, $d BBB*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rf_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",Rd_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case CAST_DI: /* CAST_DI $d, $r BBB*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rd_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",R_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case CAST_DF: /* CAST_DF $d, $f BBB*/
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rd_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s\n",Rf_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
printRawBytes(raw,3);
}break;
case FADD: /* FADD $f1, $f2, $f3 BBBB */
case FSUB:
case FMULT:
case FDIV:
case FSLT:
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rf_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s ",Rf_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
current_byte++;
printf("%s\n",Rf_STR[RAM[current_byte]]);
raw[3] = RAM[current_byte];
printRawBytes(raw,4);
}break;
case DADD: /* DADD $d1, $d2, $d3 BBBB */
case DSUB:
case DMULT:
case DDIV:
case DSLT:
{
printf("%s ",I_Set[RAM[current_byte]]);
raw[0] = RAM[current_byte];
current_byte++;
printf("%s ",Rd_STR[RAM[current_byte]]);
raw[1] = RAM[current_byte];
current_byte++;
printf("%s ",Rd_STR[RAM[current_byte]]);
raw[2] = RAM[current_byte];
current_byte++;
printf("%s\n",Rd_STR[RAM[current_byte]]);
raw[3] = RAM[current_byte];
printRawBytes(raw,4);
}break;
default:
{
printf("instruction (%u), not handled\n",RAM[current_byte]);
}
}
printBasicRegisters();
return;
}/*end void printDbgInstr*/
/*-----------------------------------------------------------------*/
void printRawBytes(U1 *ptr, U1 len)
{
U1 i;
for(i=0;i<len;i++){ printf("[%3u]",ptr[i]); }
printf("\n");
return;
}/*end printRawBytes*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -