DEADSOFTWARE

JVM: Реализованы VAR-параметры
[dsw-obn.git] / src / backends / jvm / generator-jvm.h
1 #define MAX_REGISTERS 256
3 struct gen_register_file
4 {
5 struct
6 {
7 bool used;
8 bool wide;
9 } reg[MAX_REGISTERS];
10 int num_used;
11 int max_used;
12 };
14 struct gen_stack
15 {
16 int pointer;
17 int max_pointer;
18 };
20 struct gen_class
21 {
22 char * full_name;
23 FILE * fp;
24 gen_proc_t * p;
25 struct gen_class * base;
26 };
28 enum gen_storage
29 {
30 JVM_STORAGE_UNKNOWN,
31 JVM_STORAGE_REGISTER,
32 JVM_STORAGE_STATIC,
33 JVM_STORAGE_FIELD,
34 JVM_STORAGE_LOCAL,
35 JVM_STORAGE_VARPTR
36 };
39 struct gen_proc_t
40 {
41 int label_id;
42 struct gen_register_file * rf;
43 struct gen_stack * stack;
44 struct gen_class * class;
45 };
47 struct gen_type_t
48 {
49 int rec_id;
50 struct gen_class * class;
52 bool wide;
53 char prefix;
54 char postfix;
55 char * desc;
56 int cell_size;
57 };
59 struct gen_var_t
60 {
61 enum gen_storage storage;
62 gen_type_t * type;
63 int reg;
64 char * full_name;
65 };
67 struct gen_context_t
68 {
69 gen_module_t * current_m;
70 };
72 struct gen_module_t
73 {
74 struct gen_class * class;
75 int rec_id;
76 };
78 struct gen_label_t
79 {
80 int id;
81 };