home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
mitsch75.zip
/
scheme-7_5_17-src.zip
/
scheme-7.5.17
/
src
/
microcode
/
fasl.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-01-02
|
5KB
|
129 lines
/* -*-C-*-
$Id: fasl.h,v 9.38 1999/01/02 06:06:43 cph Exp $
Copyright (c) 1987-1999 Massachusetts Institute of Technology
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* Contains information relating to the format of FASL files.
The machine/opsys information is contained in config.h
The processor and compiled code version information is
contained in the appropriate cmp* file, or compiler.c */
/* FASL Version */
#define FASL_FILE_MARKER 0xFAFAFAFA
/* The FASL file has a header which begins as follows: */
#define FASL_HEADER_LENGTH 50 /* Scheme objects in header */
#define FASL_Offset_Marker 0 /* Marker to indicate FASL format */
#define FASL_Offset_Heap_Count 1 /* Count of objects in heap */
#define FASL_Offset_Heap_Base 2 /* Address of heap when dumped */
#define FASL_Offset_Dumped_Obj 3 /* Where dumped object was */
#define FASL_Offset_Const_Count 4 /* Count of objects in const. area */
#define FASL_Offset_Const_Base 5 /* Address of const. area at dump */
#define FASL_Offset_Version 6 /* FASL format version info. */
#define FASL_Offset_Stack_Top 7 /* Top of stack when dumped */
#define FASL_Offset_Prim_Length 8 /* Number of entries in primitive table */
#define FASL_Offset_Prim_Size 9 /* Size of primitive table in SCHEME_OBJECTs */
#define FASL_Offset_Ci_Version 10 /* Version number for compiled code interface */
#define FASL_Offset_Ut_Base 11 /* Address of the utilities vector */
#define FASL_Offset_Check_Sum 12 /* Header and data checksum. */
#define FASL_Offset_C_Length 13 /* Number of entries in the C code table */
#define FASL_Offset_C_Size 14 /* Size of C code table in SCHEME_OBJECTs */
#define FASL_Offset_Mem_Base 15 /* Base address when not HEAP_IN_LOW_MEMORY */
#define FASL_Offset_First_Free 16 /* Used to clear header */
/* Aliases for backwards compatibility. */
/* Where ext. prims. vector is */
#define FASL_Offset_Ext_Loc FASL_Offset_Prim_Length
/* Version information encoding */
#define ONE ((SCHEME_OBJECT) 1)
#define MACHINE_TYPE_LENGTH (OBJECT_LENGTH / 2)
#define MACHINE_TYPE_MASK ((ONE << MACHINE_TYPE_LENGTH) - 1)
#define The_Machine_Type(P) ((P) & MACHINE_TYPE_MASK)
#define SUBVERSION_LENGTH (MACHINE_TYPE_LENGTH - TYPE_CODE_LENGTH)
#define SUBVERSION_MASK ((ONE << SUBVERSION_LENGTH) - 1)
#define The_Sub_Version(P) (((P) >> MACHINE_TYPE_LENGTH) & SUBVERSION_MASK)
#define The_Version(P) (OBJECT_TYPE (P))
#define Make_Version(V, S, M) \
MAKE_OBJECT ((V), ((((unsigned long) (S)) << MACHINE_TYPE_LENGTH) \
| (M))) \
#define CI_MASK ((ONE << (DATUM_LENGTH / 2)) - 1)
#define CI_VERSION(P) (((P) >> (DATUM_LENGTH / 2)) & CI_MASK)
#define CI_PROCESSOR(P) ((P) & CI_MASK)
#define CI_BAND_P(P) ((OBJECT_TYPE (P)) == TC_CONSTANT)
#define MAKE_CI_VERSION(Band_p, Version, Processor_Type) \
MAKE_OBJECT (((Band_p) ? TC_CONSTANT : TC_NULL), \
((((unsigned long) (Version)) << (DATUM_LENGTH / 2)) \
| (Processor_Type)))
/* "Memorable" FASL versions -- ones where we modified something
and want to remain backwards compatible.
*/
/* Versions. */
#define FASL_FORMAT_ADDED_STACK 1
/* Subversions of highest numbered version. */
#define FASL_LONG_HEADER 3
#define FASL_DENSE_TYPES 4
#define FASL_PADDED_STRINGS 5
#define FASL_REFERENCE_TRAP 6
#define FASL_MERGED_PRIMITIVES 7
#define FASL_INTERFACE_VERSION 8
#define FASL_NEW_BIGNUMS 9
#define FASL_C_CODE 10
/* Current parameters. Always used on output. */
#define FASL_FORMAT_VERSION FASL_FORMAT_ADDED_STACK
#define FASL_SUBVERSION FASL_C_CODE
/*
The definitions below correspond to the ones above. They usually
have the same values. They differ when the format is changing: A
system can be built which reads the old format, but dumps the new one.
*/
#ifndef FASL_READ_VERSION
#define FASL_READ_VERSION FASL_FORMAT_ADDED_STACK
#endif
#ifndef FASL_READ_SUBVERSION
#define FASL_READ_SUBVERSION FASL_NEW_BIGNUMS
#endif
/* These are for Bintopsb.
They are the values of the oldest supported formats.
*/
#define FASL_OLDEST_VERSION FASL_FORMAT_ADDED_STACK
#define FASL_OLDEST_SUBVERSION FASL_PADDED_STRINGS