Man Linux: Main Page and Category List

NAME

       copt - peephole optimizer

SYSNOPIS

       copt file ...

DESCRIPTION

       copt  is  a  general-purpose peephole optimizer. It reads code from its
       standard input and writes an improved version to its  standard  output.
       copy  reads the named files for its optimizations, which are encoded as
       follows:

                 <pattern for input line 1>
                 <pattern for input line 2>
                  ...
                 <pattern for input line n>
                 =
                 <pattern for output line 1>
                 <pattern for output line 2>
                  ...
                 <pattern for output line m>
                 <blank line>

       Pattern matching uses literal string comparison,  with  one  exception:
       ‘‘%%’’  matches  the  ‘‘%’’  character,  and  ‘‘%’’ followed by a digit
       matches everything up to  the  next  occurrence  of  the  next  pattern
       character,  though  all  occurrences of %n must denote the same string.
       For example, the pattern ‘‘%1=%1.’’ matches exactly those strings  that
       begin  with  a string X, followed by a ‘‘=’’ (the first), followed by a
       second occurrence of  X,  followed  by  a  period.  In  this  way,  the
       input/output pattern

                 mov $%1,r%2
                 mov *r%2,r%2
                 =
                 mov %1,r%2

       commands copt to replace runs like

                 mov $_a,r3
                 mov *r3,r3

       with

                 mov _a,r3

       Note that a tab or newline can terminate a %n variable.

       copt  compares  each  run  of  input  patterns  with  the current input
       instruction and its predecessors. If no match is found, it advances  to
       the  next input instruction and tries again. Otherwise, it replaces the
       input instructions with  the  corresponding  output  patterns,  pattern
       variables   instantiated,and   resumes   its   search  with  the  first
       instruction of the replacement. copt matches input patterns in  reverse
       order to cascade optimizations without backing up.

BUGS

       Errors in optimization files are always possible.

SEE ALSO

       z88dk(1),   z88dk-zcc(1),   z88dk-z80asm(1),  z88dk-appmake(1),  z88dk-
       copt(1).

AUTHOR

       z88dk was written by Dominic Morris <dom@z88dk.org>, and others.

                               01 December 2009                        copt(1)