Re: [cc65] const/volatile

Date view Thread view Subject view

From: Spiro Trikaliotis (
Date: 2003-01-20 10:06:53

Hello Uz,

you wrote on Sunday, January 19, 2003 12:24 PM:

> So if I need it, but don't fetch it again, how do I get the value? Values
> don't come from nowhere, so I would have to remember the value somewhere. And
> since the 6502 doesn't have many registers, there is no place, where a value
> can be remembered effectively. Which in turn means that the optimization does
> not work on the 6502 architecture. For other machines, it may be possible to
> keep values in registers as long as possible, but the 6502 needs any register
> it has for actual arithmetics and memory access.

Hm, looking at the example of Christian:

unsigned char x = 10;
func1(x); // actual no need to save and restore
func2(x); // accu and x (reuse)

wouldn't it be possible to make it as follows, if x were declared as
const unsigned char x = 10;

this could be made to

   PUSH()     ; pushes X on stack
   PUSH()     ; pushes X again on stack

This would allow not to get x again, which would be a benefit, won't it?
Unfortunately, I don't know how much work it would be to integrate some 
logic like this.

BTW: What does the standard say about aliasing?

I think of something like

void func( const unsigned, unsigned * );

unsigned x = 1;
unsigned *px = &x;

func( x, &x )

Although x is a const parameter, it might be changed by func. Is a compiler
allowed treat x as unchanged? One should remember that this case is obvious,
but you can construct cases of wanted complexity where this use is not as
obvious as here.

Just curious,
To unsubscribe from the list send mail to 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-01-20 11:18:37 CET