Re: [cc65] cosmetic and optimization

Date view Thread view Subject view

From: Ullrich von Bassewitz (uz_at_musoftware.de)
Date: 2003-12-09 18:42:56


Hi!

On Tue, Dec 09, 2003 at 06:05:53PM +0100, Spiro Trikaliotis wrote:
> On the other hand: As the special case carlos mentioned would be able to
> be found and removed by a peephole optimizer, I ask myself if this
> really is too much complexity?

You seem to underestimate the complexity of even a simple change like this. In
the example

        ldx     foobar+1
        tax
        sta     charvar

removing the "tax" instruction will change the contents of X. What if X is
used later? What if the code reads:

        ldx     foobar+1
        tax
        sta     charvar
        ...                     ; twenty more instructions not using X
        lda     var,x

Is an optimizer that has to look forward an unknown number of instructions
still a peep hole optimizer? It may be possible to ignore this problem, hoping
that the compiler doesn't generate this sort of code. But if a lot of the
optimizer code is built on this assumption, what if parts of the code
generator are changed later? And what about inline assembly?

Please note that I didn't say it is not possible to do this sort of code
modification. But it is definitely more complex than just replacing a pattern
of three instructions by one of two.

> Is this sequence only occurring while using shifts, or are there other
> circumstances that may lead to these?

As far as I can say it is only occuring for right shifts by 8 bits, and in
addition to that, the left operand must be a global variable. The pattern for
locals looks different as well as the pattern for anything else as the left
operand.

Regards


        Uz


-- 
Ullrich von Bassewitz                                  uz_at_musoftware.de
----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.


Date view Thread view Subject view

This archive was generated by hypermail 2.1.3 : 2003-12-09 18:43:08 CET