56 lines
1.0 KiB
C
56 lines
1.0 KiB
C
#ifndef INSREUKTION
|
|
#define INSREUKTION
|
|
|
|
#define IMMEDIATE(x) ((x) & 0x00FFFFFF)
|
|
#define MSB (1 << (8 * sizeof(unsigned int) - 1))
|
|
#define IS_PRIMITIVE(objRef) (((objRef)->size & MSB) == 0)
|
|
#define SIGN_EXTEND(i) ((i) & 0x00800000 ? (i) | 0xFF000000 : (i))
|
|
#define GET_ELEMENT_COUNT(objRef) ((objRef)->size & ~MSB)
|
|
#define GET_REFS_PTR(objRef) ((ObjRef *) (objRef)-> data)
|
|
|
|
#define HALT 0
|
|
#define PUSHC 1
|
|
#define ADD 2
|
|
#define SUB 3
|
|
#define MUL 4
|
|
#define DIV 5
|
|
#define MOD 6
|
|
#define RDINT 7
|
|
#define WRINT 8
|
|
#define RDCHR 9
|
|
#define WRCHR 10
|
|
#define PUSHG 11
|
|
#define POPG 12
|
|
#define ASF 13
|
|
#define RSF 14
|
|
#define PUSHL 15
|
|
#define POPL 16
|
|
#define EQ 17
|
|
#define NE 18
|
|
#define LT 19
|
|
#define LE 20
|
|
#define GT 21
|
|
#define GE 22
|
|
#define JMP 23
|
|
#define BRF 24
|
|
#define BRT 25
|
|
#define CALL 26
|
|
#define RET 27
|
|
#define DROP 28
|
|
#define PUSHR 29
|
|
#define POPR 30
|
|
#define DUP 31
|
|
#define NEW 32
|
|
#define GETF 33
|
|
#define PUTF 34
|
|
#define NEWA 35
|
|
#define GETFA 36
|
|
#define PUTFA 37
|
|
#define GETSZ 38
|
|
#define PUSHN 39
|
|
#define REFEQ 40
|
|
#define REFNE 41
|
|
#define TGC 42
|
|
|
|
#endif /* ifndef INSREUKTION */
|