From: Chip Salzenberg <[EMAIL PROTECTED]>
Date: Tue, 29 Nov 2005 12:27:03 -0800
On Tue, Nov 29, 2005 at 12:14:24PM -0800, Brent 'Dax' Royal-Gordon wrote:
> Chip Salzenberg <[EMAIL PROTECTED]> wrote:
> > P0 := P1 # aliasing: P0 and P1 point to same PMC
> > P0 := opcode # aliasing: P0 points to PMC returned by opcode
> > P0 = ... # assignment: modifies P0, NO MATTER WHAT '...' IS
> >
> > S0 := S1 # aliasing: S0 and S1 point to same header
> > S0 := opcode # aliasing: S0 points to header returned by opcode
> > S0 = ... # assignment: modifies S0, NO MATTER WHAT '...' IS
> >
> > I0 := ... # ILLEGAL
> > I0 = ... # assignment: modifies I0
> >
> > N0 := ... # ILLEGAL
> > N0 = ... # assignment: modifies N0
>
> I'm not sure about the last two (in a lot of ways, they're more like
> := than = ),
I don't see that. The key semantic behind := is alias creation. After
I0 = I1 # both old and new syntax
is I0 an alias for I1? No. Does modifying I0 modify I1? No.
Therefore, that's an '=', not a ':='.
So "aliasing" copies the pointer (i.e. the object itself), and
"assignment" copies the value? Personally, I think of "object" and
"value" for numbers as being the same thing, so I would argue that both
"=" and ":=" should be legal for N and I registers; they just happen to
mean the same. I also think it would be easier for compilers to choose
to emit either syntax. FWIW.
-- Bob Rogers
http://rgrjr.dyndns.org/