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 }