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