Mercurial > hg-old > index.cgi
comparison lwasm/main.c @ 337:04c80c51b16a
Checkpoint development
author | lost |
---|---|
date | Fri, 12 Mar 2010 06:01:38 +0000 |
parents | 9f58e3bca6e3 |
children | 7b4123dce741 |
comparison
equal
deleted
inserted
replaced
336:401587ab6a09 | 337:04c80c51b16a |
---|---|
163 /* | 163 /* |
164 main function; parse command line, set up assembler state, and run the | 164 main function; parse command line, set up assembler state, and run the |
165 assembler on the first file | 165 assembler on the first file |
166 */ | 166 */ |
167 extern void do_pass1(asmstate_t *as); | 167 extern void do_pass1(asmstate_t *as); |
168 extern void lwasm_evaluate_special(int t, void *ptr); | |
169 extern void lwasm_evaluate_var(char *var); | |
168 | 170 |
169 int main(int argc, char **argv) | 171 int main(int argc, char **argv) |
170 { | 172 { |
171 /* assembler state */ | 173 /* assembler state */ |
172 asmstate_t asmstate = { 0 }; | 174 asmstate_t asmstate = { 0 }; |
173 program_name = argv[0]; | 175 program_name = argv[0]; |
176 | |
177 lw_expr_set_special_handler(lwasm_evaluate_special); | |
178 lw_expr_set_var_handler(lwasm_evaluate_var); | |
174 | 179 |
175 /* initialize assembler state */ | 180 /* initialize assembler state */ |
176 asmstate.include_list = lw_stringlist_create(); | 181 asmstate.include_list = lw_stringlist_create(); |
177 asmstate.input_files = lw_stringlist_create(); | 182 asmstate.input_files = lw_stringlist_create(); |
178 | 183 |
184 asmstate.output_file = lw_strdup("a.out"); | 189 asmstate.output_file = lw_strdup("a.out"); |
185 } | 190 } |
186 | 191 |
187 input_init(&asmstate); | 192 input_init(&asmstate); |
188 | 193 |
189 // do_pass1(&asmstate); | 194 do_pass1(&asmstate); |
190 { | |
191 lw_expr_t te; | |
192 | |
193 te = lw_expr_build(lw_expr_type_oper, lw_expr_oper_plus, | |
194 lw_expr_build_noref(lw_expr_type_oper, lw_expr_oper_plus, | |
195 lw_expr_build_noref(lw_expr_type_oper, lw_expr_oper_times, | |
196 lw_expr_build_noref(lw_expr_type_int, 2), | |
197 lw_expr_build_noref(lw_expr_type_var, "tvar") | |
198 ), | |
199 lw_expr_build_noref(lw_expr_type_oper, lw_expr_oper_times, | |
200 lw_expr_build_noref(lw_expr_type_var, "tvar"), | |
201 lw_expr_build_noref(lw_expr_type_int, 3) | |
202 ) | |
203 ), | |
204 lw_expr_build_noref(lw_expr_type_oper, lw_expr_oper_times, | |
205 lw_expr_build_noref(lw_expr_type_int, 16), | |
206 lw_expr_build_noref(lw_expr_type_var, "avar") | |
207 ) | |
208 ); | |
209 | |
210 lw_expr_print(te); | |
211 printf("\n"); | |
212 | |
213 lw_expr_simplify(te); | |
214 lw_expr_print(te); | |
215 printf("\n"); | |
216 } | |
217 | |
218 exit(0); | 195 exit(0); |
219 } | 196 } |