File tree Expand file tree Collapse file tree 1 file changed +44
-46
lines changed
Expand file tree Collapse file tree 1 file changed +44
-46
lines changed Original file line number Diff line number Diff line change 127127 end sub;
128128
129129 sub E_imm(value: int16) is
130- E("#" );
130+ E_b8('#' );
131131 E_i16(value);
132132 end sub;
133133
171171 R_flush(dest);
172172 E_mov(dest);
173173 E_reg(src);
174- E(", " );
174+ E_comma( );
175175 E_reg(dest);
176176 E_nl();
177177 end sub;
178178
179179 sub E_loadaddr(reg: RegId, sym: [Symbol], off: Size) is
180180 R_flush(reg);
181181 E_mov(reg);
182- E("#" );
182+ E_b8('#' );
183183 E_symref(sym, off);
184- E(", " );
184+ E_comma( );
185185 E_reg(reg);
186186 E_nl();
187187 end sub;
188188
189189 sub E_loadsubref(reg: RegId, subr: [Subroutine]) is
190190 R_flush(reg);
191191 E_mov(reg);
192- E("#" );
192+ E_b8('#' );
193193 E_subref(subr);
194- E(", " );
194+ E_comma( );
195195 E_reg(reg);
196196 E_nl();
197197 end sub;
214214 E_mov(reg);
215215 end if;
216216 E_symref(sym, off);
217- E(", " );
217+ E_comma( );
218218 E_reg(reg);
219219 E_nl();
220220 RegCacheLeavesValue(hireg(reg), sym, off);
226226 if off != 0 then
227227 E_i32(off);
228228 end if;
229- E_b8('(' );
229+ E_openp( );
230230 E_reg(ptr);
231231 E("), ");
232232 E_reg(reg);
249249 RegCacheFlushValue(sym, off);
250250 E_mov(reg);
251251 E_reg(reg);
252- E(", " );
252+ E_comma( );
253253 E_symref(sym, off);
254254 E_nl();
255255 RegCacheLeavesValue(reg, sym, off);
264264 sub E_storeix(reg: RegId, ptr: RegId, off: Arith) is
265265 E_mov(reg);
266266 E_reg(reg);
267- E(", " );
267+ E_comma( );
268268 if off != 0 then
269269 E_i32(off);
270270 end if;
271- E_b8('(' );
271+ E_openp( );
272272 E_reg(ptr);
273273 E(")\n");
274274 end sub;
300300 if (value == off) then
301301 E("(PC), ");
302302 else
303- E("#" );
303+ E_b8('#' );
304304 E_i32(value);
305- E(", " );
305+ E_comma( );
306306 end if;
307307 end if;
308308 if off != 0 then
309309 E_i32(off);
310310 end if;
311- E_b8('(' );
311+ E_openp( );
312312 E_reg(ptr);
313313 E(")\n");
314314 end sub;
342342 sub E_callreg(reg: RegId) is
343343 R_flushall();
344344 E_insn16("call");
345- E(" @" );
345+ E_b8('@' );
346346 E_reg(reg);
347347 E_nl();
348348 end sub;
357357 R_flush(dest);
358358 E_insn16("movb");
359359 E_reg(src);
360- E(", " );
360+ E_comma( );
361361 E_reg(dest);
362362 E_nl();
363363 end sub;
401401 sub E_alu2_noflush(insn: string, src: RegId, dest: RegId) is
402402 E_insn(insn, src);
403403 E_reg(src);
404- E(", " );
404+ E_comma( );
405405 E_reg(dest);
406406 E_nl();
407407 end sub;
419419 R_flush(dest);
420420 E_insn16(insn);
421421 E_reg(src);
422- E(", " );
422+ E_comma( );
423423 E_reg(dest);
424424 E_nl();
425425 end sub;
428428 R_flush(dest);
429429 E_insn16("XOR");
430430 E_reg(src);
431- E(", " );
431+ E_comma( );
432432 E_reg(dest);
433433 E_nl();
434434 if src == dest then
474474 value := -value;
475475 end if;
476476 E_u32(value as uint32);
477- E(", " );
477+ E_comma( );
478478 E_reg(dest);
479479 E_nl();
480480 end sub;
555555 end if;
556556 E_reg(src);
557557 if value != 0 then
558- E(", " );
558+ E_comma( );
559559 E_b8('#');
560560 E_i32(value);
561561 end if;
574574 R_flush(reg);
575575 E_insn16("movb");
576576 E_reg(reg);
577- E(", " );
577+ E_comma( );
578578 E_reg(reg);
579579 E_nl();
580580 end sub;
587587 R_flush(reg);
588588 E_insn16("ASH");
589589 E_reg(value);
590- E(", " );
590+ E_comma( );
591591 E_reg(reg);
592592 E_nl();
593593 end sub;
620620 E_neg(amount);
621621 E_insn16("ASH");
622622 E_reg(amount);
623- E(", " );
623+ E_comma( );
624624 E_reg(value);
625625 E_nl();
626626 E_sxtb(value);
631631 E_neg(amount);
632632 E_insn16("ASH");
633633 E_reg(amount);
634- E(", " );
634+ E_comma( );
635635 E_reg(value);
636636 E_nl();
637637 end sub;
642642
643643 # load mask
644644 E_mov(REG_R5);
645- E("#" );
645+ E_b8('#' );
646646 E_u32(0x8000);
647647 E_comma();
648648 E_reg(REG_R5);
674674 E_neg(value);
675675 E_insn16("ASH");
676676 E_reg(value);
677- E(", " );
677+ E_comma( );
678678 E_reg(reg);
679679 E_nl();
680680 end sub;
703703 end sub;
704704
705705 sub E_shl4(value: RegId, reg: RegId) is
706- R_flush(loreg(reg));
707- R_flush(hireg(reg));
706+ R_flush(reg);
708707 E_insn16("ASHC");
709708 E_reg(value);
710- E(", " );
709+ E_comma( );
711710 E_reg(reg);
712711 E_nl();
713712 end sub;
714713
715714 sub E_shli4(value: uint8, reg: RegId) is
716- R_flush(loreg(reg));
717- R_flush(hireg(reg));
715+ R_flush(reg);
718716 E_insn16("ASHC");
719- E("#" );
717+ E_b8('#' );
720718 E_u8(value);
721- E(", " );
719+ E_comma( );
722720 E_reg(reg);
723721 E_nl();
724722 end sub;
728726 E_insn16("ASH");
729727 E("#-");
730728 E_u8(value);
731- E(", " );
729+ E_comma( );
732730 E_reg(reg);
733731 E_nl();
734732 end sub;
740738 E_insn16("ASH");
741739 E_b8('#');
742740 E_i32(-value);
743- E(", " );
741+ E_comma( );
744742 E_reg(REG_R5);
745743 E_nl();
746744 E_movb(REG_R5, reg);
757755
758756 E_insn16("ASHC");
759757 E_reg(amount);
760- E(", " );
758+ E_comma( );
761759 E_reg(value);
762760 E_nl();
763761
764762 E_inc(amount);
765763
766764 E_insn16("ASHC");
767765 E_reg(amount);
768- E(", " );
766+ E_comma( );
769767 E_reg(REG_R4);
770768 E_nl();
771769
778776 E_neg(amount);
779777 E_insn16("ASHC");
780778 E_reg(amount);
781- E(", " );
779+ E_comma( );
782780 E_reg(value);
783781 E_nl();
784782 end sub;
811809 R_flush(src|dest);
812810 E_insn16("MUL");
813811 E_reg(dest);
814- E(", " );
812+ E_comma( );
815813 E_reg(src);
816814 E_nl();
817815 end sub;
836834 R_flush(lhs);
837835 E_insn16("DIV");
838836 E_reg(rhs);
839- E(", " );
837+ E_comma( );
840838 E_reg(lhs);
841839 E_nl();
842840 end sub;
853851 E_clr(reg);
854852 else
855853 E_mov(reg);
856- E("#" );
854+ E_b8('#' );
857855 E_i32(value);
858- E(", " );
856+ E_comma( );
859857 E_reg(reg);
860858 E_nl();
861859 end if;
@@ -1672,16 +1670,16 @@ gen ASMSYMBOL():s
16721670
16731671gen ASMSUBREF():s
16741672{
1675- E("#" );
1673+ E_b8('#' );
16761674 E_subref($s.subr);
16771675 E_space();
16781676}
16791677
16801678gen ASMVALUE():c
16811679{
1682- E_b8('(' );
1680+ E_openp( );
16831681 E_i32($c.value);
1684- E_b8(')' );
1682+ E_closep( );
16851683}
16861684
16871685gen ASMEND()
You can’t perform that action at this time.
0 commit comments