Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:05:33

0001 /*
0002  *  qp_segment.h  --
0003  *
0004  *  Original: 11-Jan-1995 15:33
0005  *
0006  *  Author:   Maarten Ballintijn <Maarten.Ballintijn@cern.ch>
0007  *
0008  *  $Id$
0009  *
0010  *  $Log$
0011  *  Revision 1.3  1996/04/23 18:38:58  maartenb
0012  *  - Add RCS keywords
0013  *
0014  *
0015  */
0016 
0017 #ifndef CERN_QP_SEGMENT
0018 #define CERN_QP_SEGMENT
0019 
0020 #include    <stdio.h>
0021 
0022 
0023 #include    "cern_types.h"
0024 
0025 typedef Int32 * Segment;    /* forward declaration */
0026 
0027 #include    "qp_query.h"
0028 
0029 
0030 
0031 typedef struct _label_ {
0032 
0033     Segment     addr;   /* the address this label points to */
0034 
0035     int     n;
0036     int     size;
0037     Segment     *ref;   /* list of references to be filled in */
0038 
0039 } Label;
0040 
0041 
0042 typedef struct _label_tab_ {
0043     int     n;
0044     int     size;
0045     Label       *tab;   /* list of labels */
0046 } LabelTab;
0047 
0048 
0049 typedef struct _segbuild_ {
0050 
0051     /* the assembly segment */
0052     bool        ok;
0053     int     n;
0054     Segment     seg;
0055     Segment     cur;
0056     Segment     last_opc;
0057 
0058     /* label table */
0059     LabelTab    *lt;
0060 
0061 } SegBuild;
0062 
0063 
0064 SegBuild *
0065 new_segbuild( int * errp );
0066 
0067 void
0068 free_segbuild( SegBuild * sbp );
0069 
0070 Segment
0071 segment_from_segbuild( SegBuild *sbp );
0072 
0073 int
0074 qp_seg_new_label( SegBuild * sbp, int *errp );
0075 
0076 bool
0077 qp_seg_flag_opc( SegBuild * sbp, Int32 v, int * errp );
0078 
0079 bool
0080 qp_seg_emit_opc( SegBuild * sbp, Int32 v, int * errp );
0081 
0082 bool
0083 qp_seg_emit_word( SegBuild * sbp, Int32 v, int * errp );
0084 
0085 bool
0086 qp_seg_emit_ref( SegBuild * sbp, int lid, int *errp );
0087 
0088 bool
0089 qp_seg_emit_label( SegBuild * sbp, int lid, int *errp );
0090 
0091 bool
0092 qp_seg_labels_resolved( SegBuild * sbp, int *errp );
0093 
0094 
0095 void
0096 dump_segment( FILE * fp, char * leader, QueryExe * qe, Segment s );
0097 
0098 #endif  /*  CERN_QP_SEGMENT */