Provided by: z88dk-bin_1.8.ds1-9_amd64 bug

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)