comparison lwasm/pass1.c @ 351:4dba8c7e242c

conditional pseudo ops added
author lost@starbug
date Sat, 27 Mar 2010 23:37:30 -0600
parents 1649bc7bda5a
children 60568b123281
comparison
equal deleted inserted replaced
350:f5666775d76f 351:4dba8c7e242c
89 cl -> addr = lw_expr_build(lw_expr_type_int, 0); 89 cl -> addr = lw_expr_build(lw_expr_type_int, 0);
90 } 90 }
91 else 91 else
92 { 92 {
93 lw_expr_t te; 93 lw_expr_t te;
94
94 as -> line_tail -> next = cl; 95 as -> line_tail -> next = cl;
96
97 // set the line address
95 te = lw_expr_build(lw_expr_type_special, lwasm_expr_linelen, cl -> prev); 98 te = lw_expr_build(lw_expr_type_special, lwasm_expr_linelen, cl -> prev);
96 cl -> addr = lw_expr_build(lw_expr_type_oper, lw_expr_oper_plus, cl -> prev -> addr, te); 99 cl -> addr = lw_expr_build(lw_expr_type_oper, lw_expr_oper_plus, cl -> prev -> addr, te);
97 lw_expr_destroy(te); 100 lw_expr_destroy(te);
98 lw_expr_simplify(cl -> addr, as); 101 lw_expr_simplify(cl -> addr, as);
102
103 // carry DP value forward
104 cl -> dpval = cl -> prev -> dpval;
99 } 105 }
100 as -> line_tail = cl; 106 as -> line_tail = cl;
101 as -> cl = cl; 107 as -> cl = cl;
102
103 // blank lines don't count for anything 108 // blank lines don't count for anything
104 // except a local symbol context break 109 // except a local symbol context break
105 if (!*line) 110 if (!*line)
106 { 111 {
107 as -> context = lwasm_next_context(as); 112 as -> context = lwasm_next_context(as);