Wait, how is that possible? Like, you can have amd64 optimized code that uses 32-bit pointers?
Wait, how is that possible? Like, you can have amd64 optimized code that uses 32-bit pointers?
On a meta-note, I'm really happy to see more highly technical submissions like this hitting and sticking on the front page.
EDIT: from the slides:
Prefer 32 bit ints to all other sizes
1. 64 bit may make some code slower [no additional explanation given]
2. 8, 16 bit computation use conversion to 32 bits and back
Additionally, code that handles 32-bit registers in x86_64 is often shorter than its 64-bit counterpart due to the lack of REX prefixes in instructions. This also reduces the instruction cache footprint. Some instructions like integer division and multiplication are also faster when handling 32-bit quantities, but this depends on the microarchitecture in question.
Excellent point, thank you. I was only thinking about the data cache. Interestingly, I believe 64-bit ARM (AArch64) instructions are still only 32 bits long though I haven't confirmed via google. Maybe someone can correct me.
Correct, but I wouldn’t say “still”, since some “thumb” AArch32 instructions are 16b.
This all is a bit hackish. With the x32 abi you can simply have 32 bit pointers everywhere.