3 ms·
Yes, caching. 32 bit quantities are often sufficient, and take up less space in cache. Additionally, code that handles 32-bit registers in x86_64 is often shor
by pbsd 12y ago
Yes, caching. 32 bit quantities are often sufficient, and take up less space in cache.
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.
- cgh 12y ago"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." 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.
- jfpoole 12y agoAArch64 instructions are still 32 bits long. These slides from the ARMv8 Technology Preview provide a great overview of the ARMv8 architecture: http://www.arm.com/files/downloads/ARMv8_Architecture.pdf http://www.arm.com/files/downloads/ARMv8_Architecture.pdf
- stephencanon 12y ago> I believe 64-bit ARM (AArch64) instructions are still only 32 bits long Correct, but I wouldn’t say “still”, since some “thumb” AArch32 instructions are 16b.