3 ms·
> i.e. we have a 64b address space but not 2^64 memory locations. Except the designers foresaw this and established Canonical Addresses[0] to prevent people f
by akira2501 6y ago
> i.e. we have a 64b address space but not 2^64 memory locations.
Except the designers foresaw this and established Canonical Addresses[0] to prevent people from using that "unused" space for tags. The space is explicitly reserved. This is probably why LuaJIT uses NaN tagging of doubles instead of tagged pointers.. even though that causes an issue of it's own[1].
[0]: https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_d...
[1]: https://github.com/LuaJIT/LuaJIT/issues/49 https://github.com/LuaJIT/LuaJIT/issues/49