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

[PREV] [HOME] [NEXT]