home *** CD-ROM | disk | FTP | other *** search
- #include "register.h"
-
- static char *pg_string[] =
- {
- "zero",
- "at",
- "v0",
- "v1",
- "a0",
- "a1",
- "a2",
- "a3",
- "t0",
- "t1",
- "t2",
- "t3",
- "t4",
- "t5",
- "t6",
- "t7",
- "s0",
- "s1",
- "s2",
- "s3",
- "s4",
- "s5",
- "s6",
- "s7",
- "t8",
- "t9",
- "k0",
- "k1",
- "gp",
- "sp",
- "s8",
- "ra",
- };
-
- char *
- say_register(r)
- int r;
- {
- static char result[128];
-
- if (r >= R_MAX)
- sprintf(&result[0], "<unknown register: %d>", r);
- else if (r >= CP3CBASE)
- sprintf(&result[0], "CP3C(%d)", r - CP3CBASE);
- else if (r >= CP3GBASE)
- sprintf(&result[0], "CP3G(%d)", r - CP3GBASE);
- else if (r >= CP2CBASE)
- sprintf(&result[0], "CP2C(%d)", r - CP2CBASE);
- else if (r >= CP2GBASE)
- sprintf(&result[0], "CP2G(%d)", r - CP2GBASE);
- else if (r >= CP1CBASE)
- {
- if (r == CP1C(31))
- sprintf(&result[0], "CP1CS");
- else
- sprintf(&result[0], "CP1C(%d)", r - CP1CBASE);
- }
- else if (r >= CP1GBASE)
- sprintf(&result[0], "CP1G(%d)", r - CP1GBASE);
- else if (r >= CP0CBASE)
- sprintf(&result[0], "CP0C(%d)", r - CP0CBASE);
- else if (r >= CP0GBASE)
- sprintf(&result[0], "CP0G(%d)", r - CP0GBASE);
- else if (r >= PCBASE)
- {
- switch (r)
- {
- case PC(0):
- sprintf(&result[0], "hi");
- break;
-
- case PC(1):
- sprintf(&result[0], "lo");
- break;
-
- case PC(2):
- sprintf(&result[0], "pc");
- break;
-
- case PC(3):
- sprintf(&result[0], "delayedpc");
- break;
-
- case PC(4):
- sprintf(&result[0], "delayedstatus");
- break;
-
- case PC(5):
- sprintf(&result[0], "break");
- break;
-
- default:
- sprintf(&result[0], "PC(%d)", r - PCBASE);
- break;
- }
- }
- else if (r >= PGBASE)
- sprintf(&result[0], "%s", pg_string[r - PGBASE]);
- else
- sprintf(&result[0], "<unknown register: %d", r);
-
- return &result[0];
- }
-
- char *
- say_fc_register(r)
- int r;
- {
- return say_register(r + CP1CBASE);
- }
-
- char *
- say_fg_register(r)
- int r;
- {
- return say_register(r + CP1GBASE);
- }
-
- char *
- say_pg_register(r)
- int r;
- {
- return say_register(r + PGBASE);
- }
-