home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / kaffe-0.5p4-src.tgz / tar.out / contrib / kaffe / kaffevm / jit / labels.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  1KB  |  43 lines

  1. /* labels.h
  2.  * Manage the labelling system.  These are used to provide the necessary
  3.  * interlinking of branches and subroutine calls.
  4.  *
  5.  * Copyright (c) 1996 Systems Architecture Research Centre,
  6.  *           City University, London, UK.
  7.  *
  8.  * See the file "license.terms" for information on usage and redistribution
  9.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  10.  *
  11.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, June 1996.
  12.  */
  13.  
  14. #ifndef __label_h
  15. #define __label_h
  16.  
  17. #define    Lnull        0x00    /* Unused label */
  18.  
  19. #define    Llong        0x01    /* Label is long (32 bits) */
  20.  
  21. #define    Lgeneral    0x00    /* Label reference general code */
  22. #define    Lcode        0x10    /* Label references bytecode offset */
  23.  
  24. #define    Lexternal    0x00    /* Label references external routine */
  25. #define    Linternal    0x20    /* Label references internal routine */
  26.  
  27. #define    Labsolute    0x00    /* Absolute value */
  28. #define    Lrelative    0x40    /* Relative value to place of insertion */
  29.  
  30. typedef struct _label_ {
  31.     uintp        at;
  32.     uintp        to;
  33.     uintp        from;
  34.     uint8        type;
  35.     struct _label_*    next;
  36. } label;
  37.  
  38. #define    ALLOCLABELNR    32
  39.  
  40. label* nextLabel(void);
  41.  
  42. #endif
  43.