示例#1
0
文件: dump.c 项目: LGTMCU/gputils
void
dump_code(proc_class_t proc_class)
{
  unsigned int _64k_base;
  unsigned short i, j, k, index;
  gp_boolean all_zero_line;
  DirBlockInfo *dbi;

  dump_memmap(proc_class);

  printf("Formatted Code Dump:\n"
         "--------------------\n");

  dbi = main_dir;

  do {
    _64k_base = gp_getu16(&dbi->dir[COD_DIR_HIGHADDR]) << 16;
    for (k = 0; k < COD_CODE_IMAGE_BLOCKS; k++) {
      index = gp_getu16(&dbi->dir[2 * (COD_DIR_CODE + k)]);

      if (index != 0) {
        read_block(temp, index);

        i = 0;
        do {
          for (j = 0, all_zero_line = true; j < 8; j++) {
            if (gp_getu16(&temp[(i + j) * 2])) {
              all_zero_line = false;
            }
          }

          if (all_zero_line) {
            i += 8;
          }
          else {
            printf("%06x:  ", gp_processor_byte_to_org(proc_class, _64k_base + 2 * (i + k * 256)));

            for (j = 0; j < 8; j++) {
              printf("%04x ", gp_getu16(&temp[2 * i++]));
            }

            putchar('\n');
          }
        } while (i < (COD_BLOCK_SIZE / 2));

        putchar('\n');
      }
    }

    putchar('\n');

    dbi = dbi->next;
  } while (dbi != NULL);
}
示例#2
0
void dump_code(void)
{
  int _64k_base;
  int i,j,k,all_zero_line,index;
  DirBlockInfo *dbi;

  dump_memmap();

  printf("\n\nFormatted Code Dump\n");
  printf("-------------------\n");

  dbi = &main_dir;

  do {
    _64k_base = gp_getl16(&dbi->dir.block[COD_DIR_HIGHADDR]) << 15;
    for (k = 0; k <= 127; k++) {
      index = gp_getl16(&dbi->dir.block[2*(COD_DIR_CODE + k)]);
      if (index != 0) {
	read_block(temp, index);

	printf("\n");

	i = 0;
	do {

	  for(j=0, all_zero_line=1; j<8; j++)
	    if( gp_getl16(&temp[(i+j)*2]) ) all_zero_line = 0;

	  if(all_zero_line)
	    i+=8;
	  else {
	    printf("\n%06x:  ",addrsize*(_64k_base+i+k*256));

	    for(j=0; j<8; j++)
	      printf("%04x ",gp_getl16(&temp[2*i++]));
	  }

	}while (i<COD_BLOCK_SIZE/2);

	printf("\n");
      }
    }
    dbi = dbi->next_dir_block_info;

  } while(dbi);

}