version 1.124, 2012/07/19 23:32:25
|
version 1.133, 2012/12/31 15:25:19
|
Line 1
|
Line 1
|
/* common header file |
/* common header file |
|
|
Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. |
Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012 Free Software Foundation, Inc. |
|
|
This file is part of Gforth. |
This file is part of Gforth. |
|
|
Line 303 typedef Label *Xt;
|
Line 303 typedef Label *Xt;
|
#define rpTOS (rp[0]) |
#define rpTOS (rp[0]) |
|
|
typedef struct { |
typedef struct { |
|
Cell next_task; |
|
Cell prev_task; |
|
Cell save_task; |
|
Cell* sp0; |
|
Cell* rp0; |
|
Float* fp0; |
|
Address lp0; |
|
Xt *throw_entry; |
|
} user_area; |
|
|
|
typedef struct { |
Address base; /* base address of image (0 if relocatable) */ |
Address base; /* base address of image (0 if relocatable) */ |
UCell checksum; /* checksum of ca's to protect against some |
UCell checksum; /* checksum of ca's to protect against some |
incompatible binary/executable combinations |
incompatible binary/executable combinations |
Line 315 typedef struct {
|
Line 326 typedef struct {
|
UCell locals_stack_size; |
UCell locals_stack_size; |
Xt *boot_entry; /* initial ip for booting (in BOOT) */ |
Xt *boot_entry; /* initial ip for booting (in BOOT) */ |
Xt *throw_entry; /* ip after signal (in THROW) */ |
Xt *throw_entry; /* ip after signal (in THROW) */ |
Cell unused1; /* possibly tib stack size */ |
Xt *quit_entry; |
|
Xt *execute_entry; |
|
Xt *find_entry; |
Label *xt_base; /* base of DOUBLE_INDIRECT xts[], for comp-i.fs */ |
Label *xt_base; /* base of DOUBLE_INDIRECT xts[], for comp-i.fs */ |
Address data_stack_base; /* this and the following fields are initialized by the loader */ |
|
Address fp_stack_base; |
|
Address return_stack_base; |
|
Address locals_stack_base; |
|
} ImageHeader; |
} ImageHeader; |
/* the image-header is created in main.fs */ |
/* the image-header is created in main.fs */ |
|
|
Line 382 extern PER_THREAD Cell *rp;
|
Line 391 extern PER_THREAD Cell *rp;
|
#define sr_call |
#define sr_call |
#endif /* !defined(GFORTH_DEBUGGING) */ |
#endif /* !defined(GFORTH_DEBUGGING) */ |
|
|
Label *gforth_engine(Xt *ip, Cell *sp, Cell *rp0, Float *fp, Address lp sr_proto); |
Label *gforth_engine(Xt *ip sr_proto); |
Label *gforth_engine2(Xt *ip, Cell *sp, Cell *rp0, Float *fp, Address lp sr_proto); |
Label *gforth_engine2(Xt *ip sr_proto); |
Label *gforth_engine3(Xt *ip, Cell *sp, Cell *rp0, Float *fp, Address lp sr_proto); |
Label *gforth_engine3(Xt *ip sr_proto); |
|
|
|
|
int gforth_main(int argc, char **argv, char **env); |
int gforth_main(int argc, char **argv, char **env); |
|
void gforth_args(int argc, char ** argv, char ** path, char ** imagename); |
|
Address gforth_loader(char* imagename, char* path); |
|
user_area* gforth_stacks(Cell dsize, Cell rsize, Cell fsize, Cell lsize); |
|
void gforth_free_stacks(user_area* t); |
|
void gforth_free(); |
|
Cell gforth_go(Xt* ip0); |
|
int gforth_boot(int argc, char** argv, char* path); |
|
int gforth_start(int argc, char ** argv); |
|
int gforth_quit(); |
|
Xt gforth_find(Char * name); |
|
int gforth_execute(Xt xt); |
|
void gforth_cleanup(); |
|
void gforth_printmetrics(); |
|
#if defined(DOUBLY_INDIRECT) |
|
int gforth_make_image(int debugflag); |
|
#endif |
|
|
/* for ABI-CODE and ;ABI-CODE */ |
/* for ABI-CODE and ;ABI-CODE */ |
typedef Cell *abifunc(Cell *sp, Float **fpp); |
typedef Cell *abifunc(Cell *sp, Float **fpp); |
Line 471 extern PER_THREAD Cell *gforth_SP;
|
Line 497 extern PER_THREAD Cell *gforth_SP;
|
extern PER_THREAD Cell *gforth_RP; |
extern PER_THREAD Cell *gforth_RP; |
extern PER_THREAD Address gforth_LP; |
extern PER_THREAD Address gforth_LP; |
extern PER_THREAD Float *gforth_FP; |
extern PER_THREAD Float *gforth_FP; |
extern PER_THREAD Address gforth_UP; |
extern PER_THREAD user_area* gforth_UP; |
|
|
extern void * gforth_pointers(Cell n); |
extern void * gforth_pointers(Cell n); |
|
|