4 ms·
Yikes. That's the same shenanigans that got them into trouble with the 68000. Everyone stuffed data into the top 8 bits of pointers because even though the 6800
by CountSessine 6y ago
Yikes. That's the same shenanigans that got them into trouble with the 68000. Everyone stuffed data into the top 8 bits of pointers because even though the 68000 had 32-bit addressing registers, it only had a 24-bit address bus and the top 8 bits were dontcare's. Then, the 6802x came out with more address lines and...
...and that's basically why x86_64 was specified to require a particular bit pattern in high-order bits - it was to stop applications and OS programmers from writing a bunch of software with tagged pointers which would tie Intel's and AMD's hands when adding address lines. I guess Apple is ok with tying their own hands.
- deleted 6y ago[deleted]
- duskwuff 6y agoTagged pointers are an officially accepted thing in ARM -- the relevant feature is called top-byte ignore (TBI). It only applies to the upper 8 bits of a pointer, leaving 56 bits for addressing.
- CountSessine 6y agoToday I Learned - thanks!
- saagarjha 6y agoI believe Apple leaves this off.
- lazyjones 6y ago72PB ought to be enough for anyone...
- jgon 6y agoDoesn't this become less and less of an issue the more bits you add to your pointers? Like with 32 bits, you can't have one memory address per person on the planet earth, at 64 bits, you can have 1 pointer per atom that makes up the planet earth, and at 128 bits we're talking 1 address per atom in the known universe (or something like that, I haven't crunched the numbers exactly, this is more to give a flavor for the order of magnitude we're talking). So if you cut off the top 8 bytes of a 32bit register and leave yourself with 24 bits, you can't even give a pointer to each person in Tokyo, but you cut off the top 8 bits of a 64 bit pointer you can still give a pointer to each atom of every human being on earth?
- kstrauser 6y agoEh, the jump from 16-bit addressing to 32-bit was a factor of 65,536. The jump from 32-bit to 64-bit is 4,294,967,296x. Throwing away the top 8 bits drops it to an address space "only" 16,777,216 times bigger than 4GB. It seems like there's some headroom for growth in there.
- saagarjha 6y agoThe bits Apple uses are not “don’t cares” this time; they’re masked off before the pointer is used.