Wrong mappin of registers in location lists

Andrew Haley aph@redhat.com
Fri Feb 14 17:14:00 GMT 2003


Daniel Berlin writes:
 > 
 > 
 > >
 > > And of course with 64-bit registers:
 > >
 > > #define ADDITIONAL_REGISTER_NAMES \
 > > { { "eax", 0 }, { "edx", 1 }, { "ecx", 2 }, { "ebx", 3 },       \
 > >   { "esi", 4 }, { "edi", 5 }, { "ebp", 6 }, { "esp", 7 },       \
 > >   { "rax", 0 }, { "rdx", 1 }, { "rcx", 2 }, { "rbx", 3 },       \
 > >   { "rsi", 4 }, { "rdi", 5 }, { "rbp", 6 }, { "rsp", 7 },       \
 > >   { "al", 0 }, { "dl", 1 }, { "cl", 2 }, { "bl", 3 },           \
 > >   { "ah", 0 }, { "dh", 1 }, { "ch", 2 }, { "bh", 3 },           \
 > >   { "mm0", 8},  { "mm1", 9},  { "mm2", 10}, { "mm3", 11},       \
 > >   { "mm4", 12}, { "mm5", 13}, { "mm6", 14}, { "mm7", 15} }
 > >
 > > I do not know whether the numbering is wrong or not.
 > 
 > However, we do know that the loclist is right, given this information.
 > 
 > The numbering says rbx == DW_OP_reg3, which is what we output.

It does, but that's not what Draft 0.21 ABI says.  See Section 3.6.2.

Maybe the ABI doc is wrong.

Andrew.



More information about the Gcc mailing list