OpenCores
URL https://opencores.org/ocsvn/igor/igor/trunk

Subversion Repositories igor

[/] [igor/] [trunk/] [simulator/] [object.h] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 atypic
#ifndef _OBJECT_H_
2
#define _OBJECT_H_
3
 
4
#include "types.h"
5
 
6
#define TYPE_NONE       0x0
7
#define TYPE_INT        0x1
8
#define TYPE_FLOAT      0x3
9
#define TYPE_CONS       0x4
10
#define TYPE_SNOC       0x5
11
#define TYPE_PTR        0x6
12
#define TYPE_ARRAY      0x7
13
#define TYPE_NIL        0x8
14
#define TYPE_T          0x9
15
#define TYPE_CHAR       0xA
16
#define TYPE_SYMBOL     0xB
17
#define TYPE_FUNCTION   0xC
18
#define TYPE_BUILTIN    0xD
19
 
20
// size and position of the parts of an object
21
#define OBJECT_DATUM_OFFSET 0
22
#define OBJECT_DATUM_MASK 0x3FFFFFF
23
#define OBJECT_TYPE_OFFSET 27
24
#define OBJECT_TYPE_MASK 0x1F
25
#define OBJECT_GC_OFFSET 26
26
#define OBJECT_GC_MASK 0x1
27
 
28
 
29
#define OBJECT_NEW(type, datum) \
30
        ((((type)&OBJECT_TYPE_MASK) << OBJECT_TYPE_OFFSET) | ((datum)&OBJECT_DATUM_MASK))
31
#define OBJECT_DATUM(obj) ((obj) & OBJECT_DATUM_MASK)
32
#define OBJECT_TYPE(obj) (((obj)>>OBJECT_TYPE_OFFSET) & OBJECT_TYPE_MASK)
33
#define OBJECT_GC(obj) (((obj)>>OBJECT_GC_OFFSET)&OBJECT_GC_MASK)
34
 
35
void object_dump(reg_t object);
36
 
37
reg_t object_get_type(reg_t object);
38
reg_t object_set_type(reg_t object, uint8_t type);
39
reg_t object_get_datum(reg_t object);
40
reg_t object_get_datum_signed(reg_t object);
41
reg_t object_set_datum(reg_t object, uint32_t datum);
42
reg_t object_get_gc(reg_t object);
43
reg_t object_set_gc(reg_t object, uint32_t gc);
44
 
45
reg_t object_make(uint8_t type, uint32_t datum);
46
 
47
int object_read(reg_t *objects, int length, FILE *f);
48
int object_write(reg_t *objects, int length, FILE *f);
49
 
50
#endif /* _OBJECT_H_ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.