home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 221_01 / cc91.c < prev    next >
Text File  |  1979-12-31  |  8KB  |  283 lines

  1. /* <<<<<   Start of cc9    >>>>> */
  2. #ifdef OPTIMIZE
  3. peephole(ptr) char *ptr; {
  4.  char val[6],*valptr;
  5.  char val1[6];
  6.  int i,addval;
  7.  while(*ptr) {
  8.  if(optimize) {
  9. #ifdef TAB
  10.  if(streq(ptr,"\tLEAY ")) {
  11.   valptr = val; /* reset pointer */
  12.   i=6;
  13.   while(*(ptr+i) != ',') {*valptr++ = *(ptr+i);++i;}
  14.   *valptr=0;
  15.   addval=i+21;
  16.   if(streq(ptr+i,",S\n\tTFR  Y,D\n\tPSHS D\n")) {
  17.    if(streq(ptr+addval,"\tLDD  [,S++]\n")) {
  18.     ot("LDD  ");outstr(val);outstr(",S");nl();
  19.     ptr=ptr+addval+13;
  20.    }
  21.    else if(streq(ptr+addval,"\tLDD  #")) {
  22.     addval=addval+7;
  23.     valptr = val1;
  24.     while(*(ptr+addval) != '\n')
  25.      {*valptr++ = *(ptr+addval); ++addval;}
  26.     *valptr=0;
  27.     ++addval;
  28.     if(streq(ptr+addval,"\tSTD  [,S++]\n")) {
  29.      ot("LDD  #");outstr(val1);nl();
  30.      ot("STD  ");outstr(val);outstr(",S");nl();
  31.      ptr=ptr+addval+13;
  32.     }
  33.     else if(streq(ptr+addval,"\tSTB  [,S++]\n")) {
  34.      ot("LDD  #");outstr(val1);nl();
  35.      ot("STB  ");outstr(val);outstr(",S");nl();
  36.      ptr=ptr+addval+13;
  37.     } 
  38.     else cout(*ptr++,output);
  39.    }
  40.    else if(streq(ptr+addval,"\tLDB  [,S++]\n")) {
  41.     ot("LDB  ");outstr(val);outstr(",S");nl();
  42.     ptr=ptr+addval+13;
  43.    }
  44.    else if(streq(ptr+addval,"\tLEAY ")) {
  45.     addval=addval+6;
  46.     valptr = val1;
  47.     while(*(ptr+addval) != ',')
  48.      {*valptr++ = *(ptr+addval); ++addval;}
  49.     *valptr=0;
  50.     ++addval;
  51.     if(streq(ptr+addval,
  52.     ",S\n\tTFR  Y,D\n\tPSHS D\n\tLDD  [,S++]\n")) {
  53.      ot("LEAY ");outstr(val);outstr(",S");nl();
  54.      ol("PSHS Y");
  55.      ot("LDD  ");outstr(val1);outstr(",S");nl();
  56.      ptr=ptr+addval+34;
  57.     }
  58.     else cout(*ptr++,output);
  59.    }
  60.    else if(streq(ptr+addval,"\tLDB  #")) {
  61.     addval=addval+7;
  62.     valptr = val1;
  63.     while(*(ptr+addval) != '\n')
  64.      {*valptr++ = *(ptr+addval); ++addval;}
  65.     *valptr=0;
  66.     ++addval;
  67.     if(streq(ptr+addval,"\tSTB  [,S++]\n")) {
  68.      ot("LDB  #");outstr(val1);nl();
  69.      ot("STB  ");outstr(val);outstr(",S");nl();
  70.      ptr=ptr+addval+13;
  71.     }
  72.     else cout(*ptr++,output);
  73.    }
  74.    else if(streq(ptr+addval,"\tLBSR ")) {
  75.     addval=addval+6;
  76.     valptr = val1;
  77.     while(*(ptr+addval) != '\n')
  78.      {*valptr++ = *(ptr+addval); ++addval;}
  79.     *valptr=0;
  80.     ++addval;
  81.     if(streq(ptr+addval,"\tSTD  [,S++]\n")) {
  82.      ot("LBSR ");outstr(val1);nl();
  83.      ot("STD  ");outstr(val);outstr(",S");nl();
  84.      ptr=ptr+addval+13;
  85.     }
  86.     else cout(*ptr++,output);
  87.    }
  88.    else if(streq(ptr+addval,
  89.    "\tPSHS D\n\tLDD  [,S++]\n\tADDD #")) {
  90.     addval=addval+28;
  91.     valptr = val1;
  92.     while(*(ptr+addval) != '\n')
  93.      {*valptr++ = *(ptr+addval); ++addval;}
  94.     *valptr=0;
  95.     ++addval;
  96.     if(streq(ptr+addval,"\tSTD  [,S++]\n")) {
  97.      ot("LDD  ");outstr(val);outstr(",S");nl();
  98.      ot("ADDD #");outstr(val1);nl();
  99.      ot("STD  ");outstr(val);outstr(",S");nl();
  100.      ptr=ptr+addval+13;
  101.     }
  102.     else cout(*ptr++,output);
  103.    }
  104.    else if(streq(ptr+addval,
  105.    "\tPSHS D\n\tLDD  [,S++]\n\tSUBD #")) {
  106.     addval=addval+28;
  107.     valptr = val1;
  108.     while(*(ptr+addval) != '\n')
  109.      {*valptr++ = *(ptr+addval); ++addval;}
  110.     *valptr=0;
  111.     ++addval;
  112.     if(streq(ptr+addval,"\tSTD  [,S++]\n")) {
  113.      ot("LDD  ");outstr(val);outstr(",S");nl();
  114.      ot("SUBD #");outstr(val1);nl();
  115.      ot("STD  ");outstr(val);outstr(",S");nl();
  116.      ptr=ptr+addval+13;
  117.     }
  118.     else cout(*ptr++,output);
  119.    }
  120.    else cout(*ptr++,output);
  121.   }
  122.   else cout(*ptr++,output);
  123.  }
  124.  else if(streq(ptr,"\tPSHS D\n\tLDD  #")) {
  125.   valptr = val;
  126.   i = 15;
  127.   while(*(ptr+i) != '\n') {*valptr++ = *(ptr+i);++i;}
  128.   *valptr=0;
  129.   addval=i+12;
  130.   if(streq(ptr+i,"\n\tADDD ,S++\n")) {
  131.    ot("ADDD #");outstr(val);nl();
  132.    ptr=ptr+addval;
  133.   }
  134.   else if(streq(ptr+i,
  135.   "\n\tPULS X\n\tPSHS D\n\tTFR  X,D\n\tSUBD ,S++\n")) {
  136.    ot("SUBD #");outstr(val);nl();
  137.    ptr=ptr+i+38;
  138.   }
  139.   else cout(*ptr++,output);
  140.  }
  141.  else cout(*ptr++,output);
  142. #else
  143.  if(streq(ptr," LEAY ")) {
  144.   valptr = val; /* reset pointer */
  145.   i=6;
  146.   while(*(ptr+i) != ',') {*valptr++ = *(ptr+i);++i;}
  147.   *valptr=0;
  148.   addval=i+21;
  149.   if(streq(ptr+i,",S\n TFR  Y,D\n PSHS D\n")) {
  150.    if(streq(ptr+addval," LDD  [,S++]\n")) {
  151.     ot("LDD  ");outstr(val);outstr(",S");nl();
  152.     ptr=ptr+addval+13;
  153.    }
  154.    else if(streq(ptr+addval," LDD  #")) {
  155.     addval=addval+7;
  156.     valptr = val1;
  157.     while(*(ptr+addval) != '\n')
  158.      {*valptr++ = *(ptr+addval); ++addval;}
  159.     *valptr=0;
  160.     ++addval;
  161.     if(streq(ptr+addval," STD  [,S++]\n")) {
  162.      ot("LDD  #");outstr(val1);nl();
  163.      ot("STD  ");outstr(val);outstr(",S");nl();
  164.      ptr=ptr+addval+13;
  165.     }
  166.     else if(streq(ptr+addval," STB  [,S++]\n")) {
  167.      ot("LDD  #");outstr(val1);nl();
  168.      ot("STB  ");outstr(val);outstr(",S");nl();
  169.      ptr=ptr+addval+13;
  170.     } 
  171.     else cout(*ptr++,output);
  172.    }
  173.    else if(streq(ptr+addval," LDB  [,S++]\n")) {
  174.     ot("LDB  ");outstr(val);outstr(",S");nl();
  175.     ptr=ptr+addval+13;
  176.    }
  177.    else if(streq(ptr+addval," LEAY ")) {
  178.     addval=addval+6;
  179.     valptr = val1;
  180.     while(*(ptr+addval) != ',')
  181.      {*valptr++ = *(ptr+addval); ++addval;}
  182.     *valptr=0;
  183.     ++addval;
  184.     if(streq(ptr+addval,
  185.     ",S\n TFR  Y,D\n PSHS D\n LDD  [,S++]\n")) {
  186.      ot("LEAY ");outstr(val);outstr(",S");nl();
  187.      ol("PSHS Y");
  188.      ot("LDD  ");outstr(val1);outstr(",S");nl();
  189.      ptr=ptr+addval+34;
  190.     }
  191.     else cout(*ptr++,output);
  192.    }
  193.    else if(streq(ptr+addval," LDB #")) {
  194.     addval=addval+7;
  195.     valptr = val1;
  196.     while(*(ptr+addval) != '\n')
  197.      {*valptr++ = *(ptr+addval); ++addval;}
  198.     *valptr=0;
  199.     ++addval;
  200.     if(streq(ptr+addval," STB  [,S++]\n")) {
  201.      ot("LDB  #");outstr(val1);nl();
  202.      ot("STB  ");outstr(val);outstr(",S");nl();
  203.      ptr=ptr+addval+13;
  204.     }
  205.     else cout(*ptr++,output);
  206.    }
  207.    else if(streq(ptr+addval," LBSR ")) {
  208.     addval=addval+6;
  209.     valptr = val1;
  210.     while(*(ptr+addval) != '\n')
  211.      {*valptr++ = *(ptr+addval); ++addval;}
  212.     *valptr=0;
  213.     ++addval;
  214.     if(streq(ptr+addval," STD  [,S++]\n")) {
  215.      ot("LBSR ");outstr(val1);nl();
  216.      ot("STD  ");outstr(val);outstr(",S");nl();
  217.      ptr=ptr+addval+13;
  218.     }
  219.     else cout(*ptr++,output);
  220.    }
  221.    else if(streq(ptr+addval,
  222.    " PSHS D\n LDD  [,S++]\n ADDD #")) {
  223.     addval=addval+28;
  224.     valptr = val1;
  225.     while(*(ptr+addval) != '\n')
  226.      {*valptr++ = *(ptr+addval); ++addval;}
  227.     *valptr=0;
  228.     ++addval;
  229.     if(streq(ptr+addval," STD  [,S++]\n")) {
  230.      ot("LDD ");outstr(val);outstr(",S");nl();
  231.      ot("ADDD #");outstr(val1);nl();
  232.      ot("STD  ");outstr(val);outstr(",S");nl();
  233.      ptr=ptr+addval+13;
  234.     }
  235.     else cout(*ptr++,output);
  236.    }
  237.    else if(streq(ptr+addval,
  238.    " PSHS D\n LDD  [,S++]\n SUBD #")) {
  239.     addval=addval+28;
  240.     valptr = val1;
  241.     while(*(ptr+addval) != '\n')
  242.      {*valptr++ = *(ptr+addval); ++addval;}
  243.     *valptr=0;
  244.     ++addval;
  245.     if(streq(ptr+addval," STD  [,S++]\n")) {
  246.      ot("LDD  ");outstr(val);outstr(",S");nl();
  247.      ot("SUBD #");outstr(val1);nl();
  248.      ot("STD  ");outstr(val);outstr(",S");nl();
  249.      ptr=ptr+addval+13;
  250.     }
  251.     else cout(*ptr++,output);
  252.    }
  253.    else cout(*ptr++,output);
  254.   }
  255.   else cout(*ptr++,output);
  256.  }
  257.  else if(streq(ptr," PSHS D\n LDD  #")) {
  258.   valptr = val;
  259.   i = 15;
  260.   while(*(ptr+i) != '\n') {*valptr++ = *(ptr+i);++i;}
  261.   *valptr=0;
  262.   addval=i+12;
  263.   if(streq(ptr+i,"\n ADDD ,S++\n")) {
  264.    ot("ADDD #");outstr(val);nl();
  265.    ptr=ptr+addval;
  266.   }
  267.   else if(streq(ptr+i,
  268.   "\n PULS X\n PSHS D\n TFR  X,D\n SUBD ,S++\n")) {
  269.    ot("SUBD #");outstr(val);nl();
  270.    ptr=ptr+i+38;
  271.   }
  272.   else cout(*ptr++,output);
  273.  }
  274.  else cout(*ptr++,output);
  275. #endif
  276.  }
  277.  else cout(*ptr++,output);
  278.  }
  279. }
  280. #endif
  281.  
  282. /* <<<<<  End of compiler  >>>>> */
  283.