/*====================================================================* * * void regview32 (void const * memory, size_t offset, size_t length, FILE *fp); * * memory.h * * print memory as a binary dump showing absolute memory offsets * and 32-bit binary register maps; sample output looks like: * * REGISTER CONTENTS 31----24 23----16 15----08 07----00 * * 00183000 00000F7F 00000000-00000000-00001111-01111111 * 00183004 00000A00 00000000-00000000-00001010-00000000 * 00183008 00000FF8 00000000-00000000-00001111-11111000 * 0018300C 00000000 00000000-00000000-00000000-00000000 * 00183010 00000075 00000000-00000000-00000000-01110101 * * the header line shown above is not part of the output; * * Motley Tools by Charles Maier <cmaier@cmassoc.net>; * Copyright (c) 2001-2006 by Charles Maier Associates; * Licensed under the Internet Software Consortium License; * *--------------------------------------------------------------------*/ #ifndef REGVIEW_SOURCE #define REGVIEW_SOURCE #include <stdio.h> #include "../tools/memory.h" #include "../tools/endian.h" void regview32 (void const * memory, size_t offset, size_t extent, FILE *fp) { uint32_t * origin = (uint32_t *)(memory); while (extent >= sizeof (* origin)) { signed bit = sizeof (* origin) << 3; printf ("%08X ", (uint32_t)(offset)); printf ("%08X ", LE32TOH (* origin)); while (bit--) { putc (((LE32TOH (* origin) >> bit) & 1)? '1': '0', fp); if ((bit) && !(bit%8)) { putc ('-', fp); } } putc ('\n', fp); offset += sizeof (* origin); extent -= sizeof (* origin); origin++; } return; } #endif