RPA Toolkit
3c07aa09a6e305e93f7d2f699381592cfee4b32d
[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 "rvmcpu.h"
8 #include "rvmcodemap.h"
9
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 #define RVM_CODEGEN_FUNCINITOFFSET 4
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 ruint rvm_codegen_vargs_funcstart(rvm_codegen_t *cg, const rchar* name, ruint namesize);
29 ruint rvm_codegen_vargs_funcstart_str(rvm_codegen_t *cg, const rchar* name);
30 void rvm_codegen_funcend(rvm_codegen_t *cg);
31 ruint rvm_codegen_addins(rvm_codegen_t *cg, rvm_asmins_t ins);
32 rvm_asmins_t *rvm_codegen_getcode(rvm_codegen_t *cg, ruint index);
33 rulong rvm_codegen_getcodesize(rvm_codegen_t *cg);
34
35 #ifdef __cplusplus
36 }
37 #endif
38
39 #endif
40