On 12/15/2009 10:26 PM, Jamie Lokier wrote:
But that said, I'm not sure if this line from earlier breaks the test:
index = ((code>> 3)& 7) | REX_X(s);
When is REX_X(s) not zero, and does it break the index != 4 test?
When %r12 (4+8=12) is used as an index. That's a valid statement, so
it's okay to test index != 4 (when REX_X(s) is not zero it is always
eight, and you'd get index == 12):
0: 8b 04 65 11 22 33 44 mov 0x44332211(,%riz,2),%eax
7: 42 8b 04 65 11 22 33 44 mov 0x44332211(,%r12,2),%eax
(BTW %eiz/%riz are not accepted by my GAS, only produced by the
disassembler).
Paolo