xenial (1) copt.1.gz

Provided by: z88dk-bin_1.8.ds1-10_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)