3 ms·
So just tagged pointers essentially? That's possible on x86 isn't it (unless it's an endian-thing)?
by berkut 6y ago
So just tagged pointers essentially? That's possible on x86 isn't it (unless it's an endian-thing)?
- saagarjha 6y agoIt is and both both platforms use tagged pointers.
- j16sdiz 6y agoyes, but they have hardware acceleration for that specific tagged pointer type.
- wtallis 6y agox86-64 was designed to prevent (or at least discourage) efficient use of tagged pointers, with the higher half/lower half split in the virtual address space. All the excess high-order bits you don't need for actual addressing are required to have the same value, so you effectively only get at most one tag bit.
- saagarjha 6y agoThey’re required to have the same value upon dereference; there is no restrictions prior to this as assembly doesn’t care what a register is. The bits are appropriately masked off when necessary prior to using the pointer.