ldsegs.h
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

C/C++

  1. /*
  2.  * ldsegs.h Data for 'ldrdf' to determine what to do with different
  3.  * types of segment. This may be useful in other contexts also.
  4.  */
  5. #ifndef UI16
  6. #define UI16 unsigned short
  7. #endif
  8. struct segconfig {
  9.     UI16 typelow, typehi;/* range of seg nos for which this is valid */
  10.     char * typedesc;  /* a description of the segment type */
  11.     UI16 dowhat;  /* one of the SEG_xxxx values below */
  12.     UI16 mergetype;  /* if SEG_MERGE what type segment do we merge with?
  13.     0 -> same type of segment. This type is also
  14.     used with SEG_NEWSEG. */
  15. };
  16. #define SEG_IGNORE 0
  17. #define SEG_NEWSEG 1
  18. #define SEG_MERGE  2
  19. #define SEGCONFIGMAX 11
  20. struct segconfig sconft[SEGCONFIGMAX] = {
  21.     {0x0000, 0x0000, "NULL segment", 0, 0},
  22.     {0x0001, 0x0001, "text", 2, 0},
  23.     {0x0002, 0x0002, "data", 2, 0},
  24.     {0x0003, 0x0003, "comment(ignored)", 0, 0},
  25.     {0x0004, 0x0005, "comment(kept)", 2, 0},
  26.     {0x0006, 0x0007, "debug information", 2, 0},
  27.     {0x0008, 0x001F, "reserved(general extensions)", 1, 0},
  28.     {0x0020, 0x0FFF, "reserved(MOSCOW)", 1, 0},
  29.     {0x1000, 0x7FFF, "reserved(system dependant)", 1, 0},
  30.     {0x8000, 0xFFFE, "reserved(other)", 1, 0},
  31.     {0xFFFF, 0xFFFF, "invalid segment", 0, 0}};
  32. #define getsegconfig(target,number)  
  33.     {
  34.        int _i;
  35.        int _t = number;
  36.        for (_i = 0; _i < SEGCONFIGMAX; _i++)
  37.           if (_t >= sconft[_i].typelow && _t <= sconft[_i].typehi)
  38.           {
  39.               target = sconft[_i];
  40.               if (target.mergetype == 0) target.mergetype = _t;
  41.               break;
  42.           }
  43.        if (_i == SEGCONFIGMAX)
  44.        {
  45.           fprintf(stderr, "PANIC: can't find segment %04X in segconfign",
  46.                   _t);
  47.           exit(1);
  48.        }
  49.     }