On 15 Oct 2001, Brian Wheeler wrote: > With the addition of clone, I started writing some generic routines > which might be useful (index,lc,uc,reverse,abs,tr,etc)...and I came > across some weirdness: > > doing: > save S0 > restore S1 > > (since there's no set S1,S0) > > binds the registers together, so a change to one is a change to > both...which doesn't happen on int registers.
Right. Save on a string register pushes the pointer to the string structure in the register onto the stack. The same thing happens with PMCs, or will when they're implemented. The assumption is that, when you push a register onto the stack, you'll then stomp on the contents of the register. (Rather than what the register points to...) Otherwise a push would need to create a copy of the string structure and a copy of the string contents. Dan