(taddr[i] + (char *) &buf[i][j] - (char *) &buf[i][0]),
(taddr[i] + ((char *) &buf[i][j] - (char *) &buf[i][0])),
main (int argc, char **argv){  unsigned int ovfl = 0, profcnt = 0;  struct timeval tv, start;  struct prof prof[32];  double t_tick, delta;  long int sum = 0;  int i, j;  for (i = 0; i < NELEMS (taddr); ++i)    {      prof[profcnt].pr_base = buf[i];      prof[profcnt].pr_size = sizeof (buf[i]);      prof[profcnt].pr_off = taddr[i];      prof[profcnt].pr_scale = 0x10000;      ++profcnt;    }  prof[profcnt].pr_base = blong[0];  prof[profcnt].pr_size = sizeof (blong[0]);  prof[profcnt].pr_off = 0x80001000;  prof[profcnt].pr_scale = 0x10000;  ++profcnt;  prof[profcnt].pr_base = bshort[0];  prof[profcnt].pr_size = sizeof (bshort[0]);  prof[profcnt].pr_off = 0x80000080;  prof[profcnt].pr_scale = 0x10000;  ++profcnt;  prof[profcnt].pr_base = bshort[1];  prof[profcnt].pr_size = sizeof (bshort[1]);  prof[profcnt].pr_off = 0x80000f80;  prof[profcnt].pr_scale = 0x10000;  ++profcnt;  prof[profcnt].pr_base = bshort[2];  prof[profcnt].pr_size = sizeof (bshort[2]);  prof[profcnt].pr_off = 0x80001080;  prof[profcnt].pr_scale = 0x10000;  ++profcnt;  prof[profcnt].pr_base = bshort[3];  prof[profcnt].pr_size = sizeof (bshort[3]);  prof[profcnt].pr_off = 0x80001f80;  prof[profcnt].pr_scale = 0x10000;  ++profcnt;  prof[profcnt].pr_base = bshort[4];  prof[profcnt].pr_size = sizeof (bshort[4]);  prof[profcnt].pr_off = 0x80002080;  prof[profcnt].pr_scale = 0x10000;  ++profcnt;  prof[profcnt].pr_base = vlong[0];  prof[profcnt].pr_size = sizeof (vlong[0]);  prof[profcnt].pr_off = 0x80000080;  prof[profcnt].pr_scale = 0x10000;  ++profcnt;  /* Set up overflow counter (must be last on Irix).  */  prof[profcnt].pr_base = &ovfl;  prof[profcnt].pr_size = sizeof (ovfl);  prof[profcnt].pr_off = 0;  prof[profcnt].pr_scale = 2;  ++profcnt;  /* Turn it on.  */  if (sprofil (prof, profcnt, &tv, PROF_UINT) < 0)    {      if (errno == ENOSYS)	exit (0);      perror ("sprofil");      exit (1);    }  t_tick = tv.tv_sec + 1e-6 * tv.tv_usec;  printf ("profiling period = %g ms\n", 1e3 * t_tick);  gettimeofday (&start, NULL);  do    {      for (i = 0; i < 21; ++i)	sum += fac (i);      gettimeofday (&tv, NULL);      timersub (&tv, &start, &tv);      delta = tv.tv_sec + 1e-6 * tv.tv_usec;    }  while (delta < 1000 * t_tick);  printf ("sum = 0x%lx\n", sum);  /* Turn it off.  */  if (sprofil (NULL, 0, NULL, 0) < 0)    {      if (errno == ENOSYS)	exit (0);      perror ("sprofil");      exit (1);    }  printf ("overflow = %u\n", ovfl);  for (i = 0; i < NELEMS (taddr); ++i)    for (j = 0; j < 0x10000 / sizeof (int); ++j)      if (buf[i][j] != 0)	printf ("%0*Zx\t%u\t(buffer %d)\n",		(int) (sizeof (size_t) * 2),		(taddr[i] + (char *) &buf[i][j] - (char *) &buf[i][0]),		buf[i][j], i);  return 0;}