00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "context.h"
00027
00028 #define FOREIGN_NAMELEN 128
00029 #define SHORT_LDOPTIONLEN 254
00030
00031
00032
00033 struct index_block {
00034 struct index_block *next ;
00035 unsigned long size ;
00036 } ;
00037
00038 typedef struct index_block index_hdr, * pindex ;
00039
00040 #define SIZE_IDX_HDR (sizeof(index_hdr))
00041
00042 #define i_next(i) ((i)->next)
00043 #define i_size(i) ((i)->size)
00044 #define i_block(i) ((CPtr)((i)+1))
00045
00046 struct text_segment {
00047 struct text_segment * next ;
00048 struct text_segment * prev ;
00049 pindex index ;
00050 unsigned long size ;
00051 } ;
00052
00053 typedef struct text_segment text_seg, seg_hdr, *pseg ;
00054
00055 #define SIZE_SEG_HDR (sizeof(seg_hdr))
00056
00057 #define seg_hdr(s) ((s)-1)
00058 #define seg_next(s) (((s)-1)->next)
00059 #define seg_prev(s) (((s)-1)->prev)
00060 #define seg_index(s) (((s)-1)->index)
00061 #define seg_size(s) (((s)-1)->size)
00062 #define seg_text(s) ((CPtr)(s))
00063
00064 #define OBJ_WORD_SIZE 4
00065 #define WORD_SIZE ( sizeof(Cell) )
00066
00067 #define ZOOM_FACTOR (WORD_SIZE / OBJ_WORD_SIZE)
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 #define fix_bb(lptr) (cell((CPtr)(lptr)) = \
00079 (((((Cell)(*(pb)(lptr)) << 8 | (Cell)(*((pb)(lptr)+1)))\
00080 << 8) | (Cell)(*((pb)(lptr)+2))) << 8) | (Cell)(*((pb)(lptr)+3)) \
00081 )
00082
00083
00084 #define fix_bb4(lptr) (*(unsigned int *)(lptr) = \
00085 (((((unsigned int)(*(pb)(lptr)) \
00086 << 8 | (unsigned int)(*((pb)(lptr)+1)))\
00087 << 8) | (unsigned int)(*((pb)(lptr)+2)))\
00088 << 8) | (unsigned int)(*((pb)(lptr)+3)) \
00089 )
00090
00091
00092
00093 extern byte *loader(CTXTdeclc char *, int);
00094 extern void env_type_set(Psc, byte, byte, xsbBool);
00095 extern void unload_seg(pseg);
00096 extern unsigned int read_magic(FILE *);