📄 exenv.c
字号:
#include "exenv.h"
U1 * RAM;
U8 R[32];
F4 Rf[10];
F8 Rd[10];
/* to get the string version of a register, use R_STR[$IP]="$IP" */
char *R_STR[] =
{
"$IP", "$SP", "$FP", "$BE", "$HS", "$HE", "$SS", "$TOP",
"$R1", "$R2", "$R3", "$R4", "$R5", "$R6", "$R7", "$R8",
"$R9", "$R10", "$R11", "$R12", "$R13", "$R14", "$R15", "$R16",
"$R17", "$R18", "$R19", "$R20", "$R21", "$R22", "$R23", "$R24"
};
char *Rf_STR[] = {"$F1","$F2","$F3","$F4","$F5","$F6","$F7","$F8","$F9","$F10"};
char *Rd_STR[]={"$D1","$D2","$D3","$D4","$D5","$D6","$D7","$D8","$D9","$D10"};
void printMemorySection(U8 address, U8 bytes)
{
U8 index;
for (index = address; index < address + bytes; index++)
{
if (index > R[$TOP])
{
printf("printMemorySection(): address ");
pU8(index);
printf(" out of bounds\n");
}
else
{
PRINT_MEM(index);
printf("\n");
}
}
return;
} /*end printMemorySection*/
/*-----------------------------------------------------------------*/
void printAllRAM()
{
U8 index;
for (index = 0; index < (U8)R[$TOP]; index++)
{
PRINT_MEM(index);
printf("\n");
}
return;
}/*end printAllRAM*/
/*-----------------------------------------------------------------*/
void printBasicRegisters()
{
printf("BASIC REGISTERS------------------------\n");
PRINT_UREG(R_STR[$IP], R[$IP]);
printf(" ");
PRINT_UREG(R_STR[$SP], R[$SP]);
printf("\n");
PRINT_UREG(R_STR[$FP], R[$FP]);
printf(" ");
PRINT_UREG(R_STR[$BE], R[$BE]);
printf("\n");
PRINT_UREG(R_STR[$HS], R[$HS]);
printf(" ");
PRINT_UREG(R_STR[$HE], R[$HE]);
printf("\n");
PRINT_UREG(R_STR[$SS], R[$SS]);
printf(" ");
PRINT_UREG(R_STR[$TOP], R[$TOP]);
printf("\n");
printf("---------------------------------------\n");
return;
}/*end printBasicRegisters*/
/*-----------------------------------------------------------------*/
void printGeneralRegisters()
{
printf("GENERAL REGISTERS----------------------\n");
PRINT_SREG(R_STR[$R1], R[$R1]);
printf(" ");
PRINT_SREG(R_STR[$R2], R[$R2]);
printf("\n");
PRINT_SREG(R_STR[$R3], R[$R3]);
printf(" ");
PRINT_SREG(R_STR[$R4], R[$R4]);
printf("\n");
PRINT_SREG(R_STR[$R5], R[$R5]);
printf(" ");
PRINT_SREG(R_STR[$R6], R[$R6]);
printf("\n");
PRINT_SREG(R_STR[$R7], R[$R7]);
printf(" ");
PRINT_SREG(R_STR[$R8], R[$R8]);
printf("\n");
PRINT_SREG(R_STR[$R9], R[$R9]);
printf(" ");
PRINT_SREG(R_STR[$R10], R[$R10]);
printf("\n");
PRINT_SREG(R_STR[$R11], R[$R11]);
printf(" ");
PRINT_SREG(R_STR[$R12], R[$R12]);
printf("\n");
PRINT_SREG(R_STR[$R13], R[$R13]);
printf(" ");
PRINT_SREG(R_STR[$R14], R[$R14]);
printf("\n");
PRINT_SREG(R_STR[$R15], R[$R15]);
printf(" ");
PRINT_SREG(R_STR[$R16], R[$R16]);
printf("\n");
PRINT_SREG(R_STR[$R17], R[$R17]);
printf(" ");
PRINT_SREG(R_STR[$R18], R[$R18]);
printf("\n");
PRINT_SREG(R_STR[$R19], R[$R19]);
printf(" ");
PRINT_SREG(R_STR[$R20], R[$R20]);
printf("\n");
PRINT_SREG(R_STR[$R21], R[$R21]);
printf(" ");
PRINT_SREG(R_STR[$R22], R[$R22]);
printf("\n");
PRINT_SREG(R_STR[$R23], R[$R23]);
printf(" ");
PRINT_SREG(R_STR[$R24], R[$R24]);
printf("\n");
printf("---------------------------------------\n");
return;
}/*end printGeneralRegisters*/
/*-----------------------------------------------------------------*/
void printFloatRegisters()
{
printf("FLOAT REGISTERS------------------------\n");
PRINT_FREG(Rf_STR[$F1], Rf[$F1]);
printf(" ");
PRINT_FREG(Rf_STR[$F2], Rf[$F2]);
printf("\n");
PRINT_FREG(Rf_STR[$F3], Rf[$F3]);
printf(" ");
PRINT_FREG(Rf_STR[$F4], Rf[$F4]);
printf("\n");
PRINT_FREG(Rf_STR[$F5], Rf[$F5]);
printf(" ");
PRINT_FREG(Rf_STR[$F6], Rf[$F6]);
printf("\n");
PRINT_FREG(Rf_STR[$F7], Rf[$F7]);
printf(" ");
PRINT_FREG(Rf_STR[$F8], Rf[$F8]);
printf("\n");
PRINT_FREG(Rf_STR[$F9], Rf[$F9]);
printf(" ");
PRINT_FREG(Rf_STR[$F10], Rf[$F10]);
printf("\n");
printf("---------------------------------------\n");
return;
}/*end printFloatRegisters*/
/*-----------------------------------------------------------------*/
void printDoubleRegisters()
{
printf("DOUBLE REGISTERS-----------------------\n");
PRINT_DREG(Rd_STR[$D1], Rd[$D1]);
printf(" ");
PRINT_DREG(Rd_STR[$D2], Rd[$D2]);
printf("\n");
PRINT_DREG(Rd_STR[$D3], Rd[$D3]);
printf(" ");
PRINT_DREG(Rd_STR[$D4], Rd[$D4]);
printf("\n");
PRINT_DREG(Rd_STR[$D5], Rd[$D5]);
printf(" ");
PRINT_DREG(Rd_STR[$D6], Rd[$D6]);
printf("\n");
PRINT_DREG(Rd_STR[$D7], Rd[$D7]);
printf(" ");
PRINT_DREG(Rd_STR[$D8], Rd[$D8]);
printf("\n");
PRINT_DREG(Rd_STR[$D9], Rd[$D9]);
printf(" ");
PRINT_DREG(Rd_STR[$D10], Rd[$D10]);
printf("\n");
printf("---------------------------------------\n");
return;
}/*end printDoubleRegisters*/
/*-----------------------------------------------------------------*/
void testRegisterPrinting()
{
U1 i;
i = 0;
for (i = $IP; i <= $R24; i++)
{
R[i] = i;
}
printBasicRegisters();
printGeneralRegisters();
for (i = $F1; i <= $F10; i++)
{
Rf[i] = i;
}
printFloatRegisters();
for (i = $D1; i <= $D10; i++)
{
Rd[i] = i;
}
printDoubleRegisters();
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -