Mercurial > hg-old > index.cgi
comparison lwasm/pass1.c @ 385:cf8c92d70eb1
Various bugfixes
author | lost@starbug |
---|---|
date | Sun, 16 May 2010 11:50:00 -0600 |
parents | 848d3cca8078 |
children | fbb7bfed8076 |
comparison
equal
deleted
inserted
replaced
384:38b50ce6967a | 385:cf8c92d70eb1 |
---|---|
89 cl -> inmod = as -> inmod; | 89 cl -> inmod = as -> inmod; |
90 cl -> csect = as -> csect; | 90 cl -> csect = as -> csect; |
91 cl -> pragmas = as -> pragmas; | 91 cl -> pragmas = as -> pragmas; |
92 cl -> context = as -> context; | 92 cl -> context = as -> context; |
93 cl -> ltext = lw_strdup(line); | 93 cl -> ltext = lw_strdup(line); |
94 as -> cl = cl; | |
94 if (!as -> line_tail) | 95 if (!as -> line_tail) |
95 { | 96 { |
96 as -> line_head = cl; | 97 as -> line_head = cl; |
97 cl -> addr = lw_expr_build(lw_expr_type_int, 0); | 98 cl -> addr = lw_expr_build(lw_expr_type_int, 0); |
98 } | 99 } |
105 | 106 |
106 // set the line address | 107 // set the line address |
107 te = lw_expr_build(lw_expr_type_special, lwasm_expr_linelen, cl -> prev); | 108 te = lw_expr_build(lw_expr_type_special, lwasm_expr_linelen, cl -> prev); |
108 cl -> addr = lw_expr_build(lw_expr_type_oper, lw_expr_oper_plus, cl -> prev -> addr, te); | 109 cl -> addr = lw_expr_build(lw_expr_type_oper, lw_expr_oper_plus, cl -> prev -> addr, te); |
109 lw_expr_destroy(te); | 110 lw_expr_destroy(te); |
110 lw_expr_simplify(cl -> addr, as); | 111 lwasm_reduce_expr(as, cl -> addr); |
112 // lw_expr_simplify(cl -> addr, as); | |
111 | 113 |
112 // carry DP value forward | 114 // carry DP value forward |
113 cl -> dpval = cl -> prev -> dpval; | 115 cl -> dpval = cl -> prev -> dpval; |
114 | 116 |
115 } | 117 } |
119 { | 121 { |
120 cl -> lineno = 1; | 122 cl -> lineno = 1; |
121 lc = 0; | 123 lc = 0; |
122 } | 124 } |
123 as -> line_tail = cl; | 125 as -> line_tail = cl; |
124 as -> cl = cl; | |
125 // blank lines don't count for anything | 126 // blank lines don't count for anything |
126 // except a local symbol context break | 127 // except a local symbol context break |
127 if (!*line) | 128 if (!*line) |
128 { | 129 { |
129 as -> context = lwasm_next_context(as); | 130 as -> context = lwasm_next_context(as); |