30 lines
543 B
C
30 lines
543 B
C
|
#ifndef SK_PROG_H
|
||
|
#define SK_PROG_H
|
||
|
|
||
|
#include "commons.h"
|
||
|
#include "value.h"
|
||
|
|
||
|
#define SK_NO_PARAM (-1)
|
||
|
#define OPCODE(G) \
|
||
|
G(OP_PUSH)
|
||
|
|
||
|
SK_ENUM_H(Opcode, OPCODE);
|
||
|
|
||
|
struct prog
|
||
|
{
|
||
|
struct vec opcodes;
|
||
|
struct vec params;
|
||
|
struct vec constants;
|
||
|
};
|
||
|
|
||
|
void prog_init(struct prog* self);
|
||
|
void prog_free(struct prog* self);
|
||
|
|
||
|
size_t prog_add_instr(struct prog* self,
|
||
|
Opcode opcode,
|
||
|
size_t param);
|
||
|
|
||
|
size_t prog_add_constant(struct prog* self,
|
||
|
struct value* new_value);
|
||
|
#endif
|