diff --git a/src/similarity.c b/src/similarity.c index 5ea97635..c01432ce 100644 --- a/src/similarity.c +++ b/src/similarity.c @@ -15,9 +15,11 @@ #include #include -#define MAX_SIZE 8192 +#define MAX_SIZE 65536 int matches[MAX_SIZE]; +int phase_mask[MAX_SIZE+MAX_SIZE]; + int main(int argc,char **argv) { if (argc!=3) { @@ -26,7 +28,8 @@ int main(int argc,char **argv) } for(int i=0;i %d\n",i,j,phase); + exit(-1); + } + + if (phase>=(MAX_SIZE+MAX_SIZE)) { + fprintf(stderr,"Phase too large : %04x %04x -> %d\n",i,j,phase); + exit(-1); + } + + if (phase_mask[phase]) { + phase_mask[phase]--; + continue; + } + for(k=0;((i+k)2) { + matches[k]++; + } + if (k>3) { + // Display particularly long matches + printf("$%04X = $%04X :",i,j); + for(int b=0;b