Re:Never create Ruby strings longer than 23 characters
by derleth on Wednesday January 04, 2012 @05:55PM
(#3426368)
> The 68k supported type tagging by having 24 bit addresses on a 32 bit machine.
Not quite: Having hardware support for type tagging means the machine knows that some bits are reserved for the tag and will therefore do arithmetic in a tag-preserving fashion. The 24-bit pointers in early m68k chips was just saving 8 bits worth of address lines.
The SPARC had tag support in hardware, in the form of special arithmetic opcodes. Further explanation:
Not quite: Having hardware support for type tagging means the machine knows that some bits are reserved for the tag and will therefore do arithmetic in a tag-preserving fashion. The 24-bit pointers in early m68k chips was just saving 8 bits worth of address lines.
The SPARC had tag support in hardware, in the form of special arithmetic opcodes. Further explanation:
http://compilers.iecc.com/comparch/article/91-04-088
> I'm not sure if allowing tagging was intentional when Motorola designed the 68k
Definitely not; it was a cost-saving measure, and a lot of software broke when a later processor made pointers fully 32-bit.
> but Mac OS did store flags in the upper bits of a pointer at some stage.
...and having a 32-bit-clean Finder was a big deal for a while because that meant it could run on the newer hardware.