⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xdump.h

📁 矩力mp3开发环境for Z80,绿色版不用安装.
💻 H
字号:
/*                              - xdump.h -

  Header for XDUMP.

  Created 961104 by Grzm.

  (c) Copyright IAR Systems 1996.

  $Id: xdump.h 1.5 1997/04/02 11:39:25 Grzm Exp $
  $Log: xdump.h $
  Revision 1.5  1997/04/02 11:39:25  Grzm
  SIMPLE version 2 adds start address.
  Revision 1.4  1996/12/02 13:09:24  Grzm
  A little more cleanup.
  Revision 1.3  1996/11/05 13:15:06  Grzm
  Minor mods to the comments.
  Revision 1.2  1996/11/05 11:54:07  Grzm
  Clean up a little.
  Revision 1.1  1996/11/05 09:41:40  Grzm
  Initial revision
                                                                              */

/*

The SIMPLE absolute object file format:

All integers in the file are represented as 4 bytes, in big-endian order;
that is, the most significant byte first.  In this description, they are
called Int32.

Strings are represented as an integer length, followed by the characters in
the string, one per byte.

The file has the following structure:

  Segment info section:
  ---------------------

    Magic number          Int32       Must be 0x18167829.
    Format version        Int32       Currently version 2.

    The next two fields only exist in version 2 of SIMPLE.

    Start address valid   Int32       Non-zero if the next field is valid.
    Start address         Int32       The start address of the program.

    Number of segments    Int32

      For each segment:

      Name                String
      Type                Int32       See below for the memory types.
      Address             Int32       The logical (program visible) address of
                                      the segment.
      Size                Int32       The length of the segment.
      Number of blocks    Int32       The number of blocks of raw data for this
                                      segment.

        For each block:

        Address           Int32       The address at which to put the raw data.
        Offset            Int32       The offset into the raw data bytes at
                                      which the raw data for this block starts.
                                      Offset 0 is the first raw data byte.
        Size              Int32       The number of bytes of raw data for this
                                      block.

  Raw data section:
  -----------------

    Size of raw data      Int32       The total number of bytes of raw data.
    Raw data                          The raw data bytes.


The defined memory types are:

   0   UNTYPED
   1   CODE
   2   DATA		          IDATA0 for 65000
   3   XDATA            NPAGE for 740, 6502
   4   IDATA            IDATA1 for 65000
   5   BIT
   7   CONST
   8   FAR
   9   HUGE
  10   FARCONST         Also called FARC
  11   HUGECONST        Also called HUGEC
  12   NEAR
  13   NEARCONST        Also called NEARC
  14   FARCODE
  15   HUGECODE
  16   NEARCODE

These are the identifiers given within parentheses to XLINK in the -Z
and -b command line options.

*/

#define TRUE  1
#define FALSE 0
typedef int BOOL;

#define SIMPLE_MAGIC 0x18167829

struct start_address_info
  {
    BOOL valid;               /* FALSE if the start address is not valid. */
    unsigned long address;    /* The actual address, if valid is not FALSE. */
  };

/* Information about one segment. */
struct segment_info
  {
    char *name;
    unsigned long type;       /* See above. */
    unsigned long addr;       /* The address in memory of the segment. */
    unsigned long adr_size;   /* The size of the segment. */
    unsigned long nraw;       /* The number of raw_offset structs. */
    struct raw_offset
      {
        unsigned long addr;   /* Raw data for this address */
        unsigned long offs;   /* is at this offset in the raw data, */
        unsigned long size;   /* and has this size. */
      } *raw;                 /* A pointer to an array of raw_offset structs. */
  };

/* Args like printf.  Print a message and then die. */
extern void fatal(const char *fmt, ...);

/* A library routine has just failed.  Use perror and then die. */
extern void syserr(const char *msg);

/* "Safe" malloc.  Die rather than return NULL. */
extern void *salloc(size_t size);

/* Do the dumping. */
extern void dump(struct start_address_info *start,
                 struct segment_info *segs,
                 unsigned long nsegs,
                 char *data,
                 unsigned long nbytes);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -