In the Intel x64 manual it says that there's XMM registers 0-7 in 32-bit SSE2 mode. Why then do 95% of the instructions that use these registers skip 0 and use 1-4?
For example, Intel's vol.2 manual entry for addps
lists it as ADDPS xmm1, xmm2/m128
.
You are misunderstanding something, probably the placeholders in the manual. When an instruction description says xmm1
or xmm2
it usually means any xmm register, the number just indicates operand numbering.
For example, ADDPS xmm1, xmm2/m128
can add two arbitrary xmm registers or add a memory operand to an arbitrary xmm register.