Hi. I am using a slightly modified gcc 3.2.3 for x86_64 and for this code:
int fff(char *x)
{
return (x[-1]);
}
It is generating:
.globl fff
fff:
.LFB2:
movl $4294967295, %eax
movsbl (%rax,%rcx),%eax
ret
My understanding is that that move of -1 into eax
does NOT sign-extend, and thus results in a very
high index, which causes a crash.
I may have stuffed something up myself.
Anyone know which code governs this behavior?
Thanks. Paul.
