Mercurial > hg-old > index.cgi
comparison lwasm/pseudo.c @ 382:eacdae8a1575
Various bugfixes
author | lost@starbug |
---|---|
date | Sat, 15 May 2010 13:39:21 -0600 |
parents | 6b33faa21a0a |
children | af5f2c51db76 |
comparison
equal
deleted
inserted
replaced
381:1624a36f12a3 | 382:eacdae8a1575 |
---|---|
86 if (!e) | 86 if (!e) |
87 { | 87 { |
88 lwasm_register_error(as, l, "Bad expression (#%s)", i); | 88 lwasm_register_error(as, l, "Bad expression (#%s)", i); |
89 break; | 89 break; |
90 } | 90 } |
91 lwasm_save_expr(l, i, e); | 91 lwasm_save_expr(l, i++, e); |
92 i++; | 92 if (**p != ',') |
93 break; | |
94 (*p)++; | |
93 } | 95 } |
94 | 96 |
95 l -> len = i; | 97 l -> len = i; |
96 } | 98 } |
97 | 99 |
107 lwasm_emitexpr(l, e, 1); | 109 lwasm_emitexpr(l, e, 1); |
108 } | 110 } |
109 } | 111 } |
110 | 112 |
111 PARSEFUNC(pseudo_parse_fdb) | 113 PARSEFUNC(pseudo_parse_fdb) |
114 { | |
115 int i = 0; | |
116 lw_expr_t e; | |
117 | |
118 for (;;) | |
119 { | |
120 e = lwasm_parse_expr(as, p); | |
121 if (!e) | |
122 { | |
123 lwasm_register_error(as, l, "Bad expression (#%d)", i); | |
124 break; | |
125 } | |
126 lwasm_save_expr(l, i++, e); | |
127 if (**p != ',') | |
128 break; | |
129 (*p)++; | |
130 } | |
131 | |
132 l -> len = i * 2; | |
133 } | |
134 | |
135 EMITFUNC(pseudo_emit_fdb) | |
136 { | |
137 int i; | |
138 lw_expr_t e; | |
139 int v; | |
140 | |
141 for (i = 0; i < (l -> len)/2; i++) | |
142 { | |
143 e = lwasm_fetch_expr(l, i); | |
144 lwasm_emitexpr(l, e, 2); | |
145 } | |
146 } | |
147 | |
148 PARSEFUNC(pseudo_parse_fqb) | |
112 { | 149 { |
113 int i = 0; | 150 int i = 0; |
114 lw_expr_t e; | 151 lw_expr_t e; |
115 | 152 |
116 for (;;) | 153 for (;;) |
119 if (!e) | 156 if (!e) |
120 { | 157 { |
121 lwasm_register_error(as, l, "Bad expression (#%s)", i); | 158 lwasm_register_error(as, l, "Bad expression (#%s)", i); |
122 break; | 159 break; |
123 } | 160 } |
124 lwasm_save_expr(l, i, e); | 161 lwasm_save_expr(l, i++, e); |
125 i++; | 162 if (**p != ',') |
126 } | |
127 | |
128 l -> len = i * 2; | |
129 } | |
130 | |
131 EMITFUNC(pseudo_emit_fdb) | |
132 { | |
133 int i; | |
134 lw_expr_t e; | |
135 int v; | |
136 | |
137 for (i = 0; i < (l -> len)/2; i++) | |
138 { | |
139 e = lwasm_fetch_expr(l, i); | |
140 lwasm_emitexpr(l, e, 2); | |
141 } | |
142 } | |
143 | |
144 PARSEFUNC(pseudo_parse_fqb) | |
145 { | |
146 int i = 0; | |
147 lw_expr_t e; | |
148 | |
149 for (;;) | |
150 { | |
151 e = lwasm_parse_expr(as, p); | |
152 if (!e) | |
153 { | |
154 lwasm_register_error(as, l, "Bad expression (#%s)", i); | |
155 break; | 163 break; |
156 } | 164 (*p)++; |
157 lwasm_save_expr(l, i, e); | |
158 i++; | |
159 } | 165 } |
160 | 166 |
161 l -> len = i * 4; | 167 l -> len = i * 4; |
162 } | 168 } |
163 | 169 |
1031 } | 1037 } |
1032 | 1038 |
1033 PARSEFUNC(pseudo_parse_align) | 1039 PARSEFUNC(pseudo_parse_align) |
1034 { | 1040 { |
1035 lw_expr_t e; | 1041 lw_expr_t e; |
1036 | |
1037 if (!**p) | 1042 if (!**p) |
1038 { | 1043 { |
1039 lwasm_register_error(as, l, "Bad operand"); | 1044 lwasm_register_error(as, l, "Bad operand"); |
1040 return; | 1045 return; |
1041 } | 1046 } |
1042 | 1047 |
1043 e = lwasm_parse_expr(as, p); | 1048 e = lwasm_parse_expr(as, p); |
1049 | |
1044 if (!e) | 1050 if (!e) |
1045 { | 1051 { |
1046 lwasm_register_error(as, l, "Bad operand"); | 1052 lwasm_register_error(as, l, "Bad operand"); |
1047 return; | 1053 return; |
1048 } | 1054 } |