12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*====================================================================*
- *
- * 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;
- * 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
|