This doesn't seem to be a problem for FPC only. The direct use of gcc gives the same result:
#include <stdio.h>
#include <stdlib.h>
unsigned long long i,j;
int main()
{
i=0xffffffffffffffff;
printf("%llu\n",i);
j=i>>63;
printf("%llu\n",j);
j=i>>64;
printf("%llu\n",j);
return 0;
}
produces:
18446744073709551615
1
18446744073709551615
H