home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume25 / trash / part01 / say.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-03-22  |  1.9 KB  |  129 lines

  1. #include    "register.h"
  2.  
  3. static char    *pg_string[]    =
  4. {
  5.     "zero",
  6.     "at",
  7.     "v0",
  8.     "v1",
  9.     "a0",
  10.     "a1",
  11.     "a2",
  12.     "a3",
  13.     "t0",
  14.     "t1",
  15.     "t2",
  16.     "t3",
  17.     "t4",
  18.     "t5",
  19.     "t6",
  20.     "t7",
  21.     "s0",
  22.     "s1",
  23.     "s2",
  24.     "s3",
  25.     "s4",
  26.     "s5",
  27.     "s6",
  28.     "s7",
  29.     "t8",
  30.     "t9",
  31.     "k0",
  32.     "k1",
  33.     "gp",
  34.     "sp",
  35.     "s8",
  36.     "ra",
  37. };
  38.  
  39. char    *
  40. say_register(r)
  41. int    r;
  42. {
  43.     static char    result[128];
  44.  
  45.     if (r >= R_MAX)
  46.         sprintf(&result[0], "<unknown register: %d>", r);
  47.     else if (r >= CP3CBASE)
  48.         sprintf(&result[0], "CP3C(%d)", r - CP3CBASE);
  49.     else if (r >= CP3GBASE)
  50.         sprintf(&result[0], "CP3G(%d)", r - CP3GBASE);
  51.     else if (r >= CP2CBASE)
  52.         sprintf(&result[0], "CP2C(%d)", r - CP2CBASE);
  53.     else if (r >= CP2GBASE)
  54.         sprintf(&result[0], "CP2G(%d)", r - CP2GBASE);
  55.     else if (r >= CP1CBASE)
  56.     {
  57.         if (r == CP1C(31))
  58.             sprintf(&result[0], "CP1CS");
  59.         else
  60.             sprintf(&result[0], "CP1C(%d)", r - CP1CBASE);
  61.     }
  62.     else if (r >= CP1GBASE)
  63.         sprintf(&result[0], "CP1G(%d)", r - CP1GBASE);
  64.     else if (r >= CP0CBASE)
  65.         sprintf(&result[0], "CP0C(%d)", r - CP0CBASE);
  66.     else if (r >= CP0GBASE)
  67.         sprintf(&result[0], "CP0G(%d)", r - CP0GBASE);
  68.     else if (r >= PCBASE)
  69.     {
  70.         switch (r)
  71.         {
  72.         case PC(0):
  73.             sprintf(&result[0], "hi");
  74.             break;
  75.  
  76.         case PC(1):
  77.             sprintf(&result[0], "lo");
  78.             break;
  79.  
  80.         case PC(2):
  81.             sprintf(&result[0], "pc");
  82.             break;
  83.  
  84.         case PC(3):
  85.             sprintf(&result[0], "delayedpc");
  86.             break;
  87.  
  88.         case PC(4):
  89.             sprintf(&result[0], "delayedstatus");
  90.             break;
  91.  
  92.         case PC(5):
  93.             sprintf(&result[0], "break");
  94.             break;
  95.  
  96.         default:
  97.             sprintf(&result[0], "PC(%d)", r - PCBASE);
  98.             break;
  99.         }
  100.     }
  101.     else if (r >= PGBASE)
  102.         sprintf(&result[0], "%s", pg_string[r - PGBASE]);
  103.     else
  104.         sprintf(&result[0], "<unknown register: %d", r);
  105.  
  106.     return &result[0];
  107. }
  108.  
  109. char    *
  110. say_fc_register(r)
  111. int    r;
  112. {
  113.     return say_register(r + CP1CBASE);
  114. }
  115.  
  116. char    *
  117. say_fg_register(r)
  118. int    r;
  119. {
  120.     return say_register(r + CP1GBASE);
  121. }
  122.  
  123. char    *
  124. say_pg_register(r)
  125. int    r;
  126. {
  127.     return say_register(r + PGBASE);
  128. }
  129.