version 1.2, 2007/12/31 17:34:59
|
version 1.16, 2012/07/23 13:27:48
|
Line 1
|
Line 1
|
/* header file for libcc-generated C code |
/* header file for libcc-generated C code |
|
|
Copyright (C) 2006,2007 Free Software Foundation, Inc. |
Copyright (C) 2006,2007,2008 Free Software Foundation, Inc. |
|
|
This file is part of Gforth. |
This file is part of Gforth. |
|
|
Gforth is free software; you can redistribute it and/or |
Gforth is free software; you can redistribute it and/or |
modify it under the terms of the GNU General Public License |
modify it under the terms of the GNU General Public License |
as published by the Free Software Foundation; either version 2 |
as published by the Free Software Foundation, either version 3 |
of the License, or (at your option) any later version. |
of the License, or (at your option) any later version. |
|
|
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
Line 15
|
Line 15
|
GNU General Public License for more details. |
GNU General Public License for more details. |
|
|
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
along with this program; if not, write to the Free Software |
along with this program. If not, see http://www.gnu.org/licenses/. |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. |
|
*/ |
*/ |
|
|
#include <gforth/@PACKAGE_VERSION@/config.h> |
#include <gforth/@PACKAGE_VERSION@/config.h> |
|
#include <setjmp.h> |
|
|
|
#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) || defined(__ANDROID__) |
|
#undef HAS_BACKLINK |
|
#else |
|
#define HAS_BACKLINK 1 |
|
#endif |
|
|
typedef CELL_TYPE Cell; |
typedef CELL_TYPE Cell; |
|
typedef unsigned char Char; |
typedef double Float; |
typedef double Float; |
|
typedef Char *Address; |
|
typedef void **Xt; |
|
|
#define Clongest long long |
#define Clongest long long |
typedef unsigned Clongest UClongest; |
typedef unsigned Clongest UClongest; |
|
|
extern Cell *gforth_SP; |
typedef struct { |
extern Float *gforth_FP; |
Cell next_task; |
|
Cell prev_task; |
|
Cell save_task; |
|
Cell* sp0; |
|
Cell* rp0; |
|
Float* fp0; |
|
Address lp0; |
|
Xt *throw_entry; |
|
} user_area; |
|
|
|
#ifdef HAS_BACKLINK |
|
extern __thread Cell *gforth_SP; |
|
extern __thread Float *gforth_FP; |
|
extern __thread Cell *gforth_RP; |
|
extern __thread char *gforth_LP; |
|
extern __thread char *gforth_UP; |
|
extern void *gforth_engine(void *); |
|
extern char *cstr(char *from, Cell size); |
|
extern char *tilde_cstr(char *from, Cell size); |
|
extern __thread jmp_buf *throw_jmp_handler; |
|
extern user_area* gforth_stacks(); |
|
#define GFORTH_ARGS void |
|
#else |
|
#define gforth_SP *((Cell **)(gforth_pointers(0))) |
|
#define gforth_FP *((Float **)(gforth_pointers(1))) |
|
#define gforth_LP *((char **)(gforth_pointers(2))) |
|
#define gforth_RP *((Cell **)(gforth_pointers(3))) |
|
#define gforth_UP *((char **)(gforth_pointers(4))) |
|
#define gforth_engine ((char *(*)(void *))gforth_pointers(5)) |
|
#define cstr ((char *(*)(char *, Cell))gforth_pointers(6)) |
|
#define tilde_cstr ((char *(*)(char *, Cell))gforth_pointers(7)) |
|
#define throw_jmp_handler *((jmp_buf**)(gforth_pointers(8))) |
|
#define gforth_stacks ((user_area *(*)())gforth_pointers(9)) |
|
#define GFORTH_ARGS void *(*gforth_pointers)(Cell) |
|
#endif |
|
|
#define CELL_BITS (sizeof(Cell) * 8) |
#define CELL_BITS (sizeof(Cell) * 8) |
|
|