RPA Toolkit
71c3ca4fa6b8e4b9f5f2b241bc0e37d31f2d2533
[rpatk.git] / rvm / rvmcodegen.h
1 #ifndef _RVMCODEGEN_H_
2 #define _RVMCODEGEN_H_
3
4 #include "rtypes.h"
5 #include "rarray.h"
6 #include "rhash.h"
7 #include "rvm.h"
8 #include "rvmcodemap.h"
9
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 #define RVM_CODEGEN_FUNCINITOFFSET 3
16
17 typedef struct rvm_codegen_s {
18         rarray_t *code;
19         ruint codeoff;
20         rvm_codemap_t *codemap;
21 } rvm_codegen_t;
22
23
24 rvm_codegen_t *rvm_codegen_create();
25 void rvm_codegen_destroy(rvm_codegen_t *cg);
26 ruint rvm_codegen_funcstart(rvm_codegen_t *cg, const rchar* name, ruint namesize, ruint args);
27 ruint rvm_codegen_funcstart_str(rvm_codegen_t *cg, const rchar* name, ruint args);
28 void rvm_codegen_funcend(rvm_codegen_t *cg);
29 ruint rvm_codegen_addins(rvm_codegen_t *cg, rvm_asmins_t ins);
30 rvm_asmins_t *rvm_codegen_getcode(rvm_codegen_t *cg, ruint index);
31 rulong rvm_codegen_getcodesize(rvm_codegen_t *cg);
32
33 #ifdef __cplusplus
34 }
35 #endif
36
37 #endif
38