Previous: Defining Smobs, Up: Data Types


6.1.10 Data Type Representations

IMMEDIATE:      B,D,E,F=data bit, C=flag code, P=pointer address bit
        ................................
inum    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB10
ichr    BBBBBBBBBBBBBBBBBBBBBBBB11110100
iflag                   CCCCCCC101110100
isym                    CCCCCCC001110100
        IMCAR:  only in car of evaluated code, cdr has cell's GC bit
ispcsym                 000CCCC00CCCC100
iloc    0DDDDDDDDDDDEFFFFFFFFFFF11111100
pointer PPPPPPPPPPPPPPPPPPPPPPPPPPPPP000
gloc    PPPPPPPPPPPPPPPPPPPPPPPPPPPPP001

   HEAP CELL:   G=gc_mark; 1 during mark, 0 other times.
        1s and 0s here indicate type.     G missing means sys (not GC'd)
        SIMPLE
cons    ..........SCM car..............0  ...........SCM cdr.............G
closure ..........SCM code...........011  ...........SCM env...........CCG
        HEADERs:
ssymbol .........long length....G0000101  ..........char *chars...........
msymbol .........long length....G0000111  ..........char *chars...........
string  .........long length....G0001101  ..........char *chars...........
vector  .........long length....G0001111  ...........SCM **elts...........
VfixN8  .........long length....G0010101  ......unsigned char *words......
VfixZ8  .........long length....G0010111  ..........char *words...........
VfixN16 .........long length....G0011101  ......unsigned short *words.....
VfixZ16 .........long length....G0011111  ........ short *words...........
VfixN32 .........long length....G0100101  ......unsigned medium *words....
VfixZ32 .........long length....G0100111  ........medium *words...........
VfixN64 .........long length....G0101101  ......unsigned long *words......
VfixZ64 .........long length....G0101111  ..........long *words...........
VfloR32 .........long length....G0110101  .........float *words...........
VfloC32 .........long length....G0110111  .........float *words...........
VfloR64 .........long length....G0111101  ........double *words...........
VfloC64 .........long length....G0111111  ........double *words...........

Vbool   .........long length....G1000101  ..........long *words...........
contin  .........long length....G1001101  .............*regs..............
specfun ................xxxxxxxxG1001111  ...........SCM name.............
cclo    ..short length..xxxxxx10G1001111  ...........SCM **elts...........
                        PTOBs
   port int portnum.CwroxxxxxxxxG1000111  ..........FILE *stream..........
 socket int portnum.C001xxxxxxxxG1000111  ..........FILE *stream..........
 inport int portnum.C011xxxxxxxxG1000111  ..........FILE *stream..........
outport int portnum.0101xxxxxxxxG1000111  ..........FILE *stream..........
 ioport int portnum.C111xxxxxxxxG1000111  ..........FILE *stream..........
fport   int portnum.C   00000000G1000111  ..........FILE *stream..........
pipe    int portnum.C   00000001G1000111  ..........FILE *stream..........
strport 00000000000.0   00000010G1000111  ..........FILE *stream..........
sfport  int portnum.C   00000011G1000111  ..........FILE *stream..........
        SUBRs
subr_0  ..........int hpoff.....01010101  ...........SCM (*f)()...........
subr_1  ..........int hpoff.....01010111  ...........SCM (*f)()...........
cxr     ..........int hpoff.....01011101  .........double (*f)()..........
subr_3  ..........int hpoff.....01011111  ...........SCM (*f)()...........
subr_2  ..........int hpoff.....01100101  ...........SCM (*f)()...........
asubr   ..........int hpoff.....01100111  ...........SCM (*f)()...........
subr_1o ..........int hpoff.....01101101  ...........SCM (*f)()...........
subr_2o ..........int hpoff.....01101111  ...........SCM (*f)()...........
lsubr_2 ..........int hpoff.....01110101  ...........SCM (*f)()...........
lsubr   ..........int hpoff.....01110111  ...........SCM (*f)()...........
rpsubr  ..........int hpoff.....01111101  ...........SCM (*f)()...........
                        SMOBs
free_cell
        000000000000000000000000G1111111  ...........*free_cell........000
flo     000000000000000000000001G1111111  ...........float num............
dblr    000000000000000100000001G1111111  ..........double *real..........
dblc    000000000000001100000001G1111111  .........complex *cmpx..........
bignum  ...int length...0000001 G1111111  .........short *digits..........
bigpos  ...int length...00000010G1111111  .........short *digits..........
bigneg  ...int length...00000011G1111111  .........short *digits..........
                        xxxxxxxx = code assigned by newsmob();
promise 000000000000000fxxxxxxxxG1111111  ...........SCM val..............
arbiter 000000000000000lxxxxxxxxG1111111  ...........SCM name.............
macro   000000000000000mxxxxxxxxG1111111  ...........SCM name.............
array   ...short rank..cxxxxxxxxG1111111  ............*array..............