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 }