Convert-Binary-C

 view release on metacpan or  search on metacpan

bin/memmap.PL  view on Meta::CPAN

  LinkedList  assertions;
  HashTable   keyword_map;
} CParseConfig;

typedef struct {
  LinkedList  enums;
  LinkedList  structs;
  LinkedList  typedef_lists;
  HashTable   htEnumerators;
  HashTable   htEnums;
  HashTable   htStructs;
  HashTable   htTypedefs;
  HashTable   htFiles;
  char       *errstr;
} CParseInfo;

typedef struct {
  char         *bufptr;
  unsigned      alignment;
  unsigned      align_base;
  int           dataTooShortFlag;
  Buffer        buf;
  CParseConfig  cfg;
  CParseInfo    cpi;
  ArchSpecs     as;
  enum {
    ET_INTEGER, ET_STRING, ET_BOTH
  }             enumType;
} CBC;

ENDC

#-------------------------------------------------
# Print the memory map for type 'CBC' with a base
# address of 0x01500000.
#-------------------------------------------------

memmap( $c, 'CBC', 0x01500000 );

#==========================================================
#                     SUBROUTINES
#==========================================================

sub memmap
{
  my($c, $type, $start) = @_;
  $start ||= 0;

  my $afmt = '%0' . 2*$c->PointerSize . 'X';

  for my $offset ( 0 .. $c->sizeof( $type ) - 1 ) {
    my $m = $c->member( $type, $offset );
    rindex( $m, '+' ) < 0 or next;
    my $t = $c->typeof( $type.$m );
    printf "$afmt  %-16s  %s\n", $start+$offset, $t, $m;
  }
}
!NO!SUBS!

close OUT or die "Can't close $file: $!";
chmod 0755, $file or die "Can't reset permissions for $file: $!\n";



( run in 1.024 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )