4 ms·
The address space of AMD64 was designed so that both the upper and lower spaces of the address are used when using less than 64 bus lines specifically to addres
by wvenable 7y ago
The address space of AMD64 was designed so that both the upper and lower spaces of the address are used when using less than 64 bus lines specifically to address this problem.
- saagarjha 7y agoRight, but a lot of high-performance code will tag the high bits of pointers anyways and apply a mask before using it for memory accesses.
- that_jojo 7y ago> and apply a mask before using it for memory accesses So it never goes onto the address bus. So it never causes an addressing issue. The 24-bit issue of the 68000 is fundamentally different. Those tagged 32-bit pointers were used directly, but truncated by the width of the actual physical interface so they never touched the outside world. ...until Motorola released CPUs with full 32-bit address pins on the package. Oops.
- saagarjha 7y agoIt's still going to break software, though. But if you're looking for a platform that lets you do this, look no further than ARMv8's TBI.
- jdsully 7y agoThat only ensures the programmer fixes the pointer before dereference. Tagged pointers that don’t make it to the bus are still a compatibility problem. It means malloc() can’t return an address overlapping the tagged bits.