#include <stdio.h>
#include <stdlib.h>

static void
dump_bytes ( FILE *fp, unsigned char *b, size_t s ) {
 size_t i;
 for (i = 0; i < s; ++i) {
  fprintf (fp, "%d = %x", i, b[i]);
  if (isprint(b[i]))
   fprintf (fp, " = %c", b[i]);
  fprintf (fp, "\n");
 }
}

int main (int argc, char *argv[]) { 

 /* The if is needed to stop the compiler from eliminating dead code,
  * and allows us to not run it.
  * This would be easier in plain old asm, but C is easier to distribute 
  * and I don't want to rewrite dump_bytes in asm for this example.
  */
 if (0 == argc) {
  begin:
  asm ("jmpl *0x8");
  end:
 }

 dump_bytes (stderr, &&begin, (&&end - &&begin));

 return EXIT_SUCCESS;
}
