Skip to content

Commit f4ea9d9

Browse files
authored
Merge pull request #169 from shattered/_0b414a67
pdp11: remove redundant calls, use helper functions to save string sp…
2 parents 138da26 + c769397 commit f4ea9d9

File tree

1 file changed

+44
-46
lines changed

1 file changed

+44
-46
lines changed

src/cowbe/archpdp11.cow.ng

Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@
127127
end sub;
128128

129129
sub E_imm(value: int16) is
130-
E("#");
130+
E_b8('#');
131131
E_i16(value);
132132
end sub;
133133

@@ -171,27 +171,27 @@
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;
@@ -214,7 +214,7 @@
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);
@@ -226,7 +226,7 @@
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);
@@ -249,7 +249,7 @@
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);
@@ -264,11 +264,11 @@
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;
@@ -300,15 +300,15 @@
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;
@@ -342,7 +342,7 @@
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;
@@ -357,7 +357,7 @@
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;
@@ -401,7 +401,7 @@
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;
@@ -419,7 +419,7 @@
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;
@@ -428,7 +428,7 @@
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
@@ -474,7 +474,7 @@
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;
@@ -555,7 +555,7 @@
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;
@@ -574,7 +574,7 @@
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;
@@ -587,7 +587,7 @@
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;
@@ -620,7 +620,7 @@
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);
@@ -631,7 +631,7 @@
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;
@@ -642,7 +642,7 @@
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);
@@ -674,7 +674,7 @@
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;
@@ -703,22 +703,20 @@
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;
@@ -728,7 +726,7 @@
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;
@@ -740,7 +738,7 @@
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);
@@ -757,15 +755,15 @@
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

@@ -778,7 +776,7 @@
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;
@@ -811,7 +809,7 @@
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;
@@ -836,7 +834,7 @@
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;
@@ -853,9 +851,9 @@
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

16731671
gen ASMSUBREF():s
16741672
{
1675-
E("#");
1673+
E_b8('#');
16761674
E_subref($s.subr);
16771675
E_space();
16781676
}
16791677

16801678
gen ASMVALUE():c
16811679
{
1682-
E_b8('(');
1680+
E_openp();
16831681
E_i32($c.value);
1684-
E_b8(')');
1682+
E_closep();
16851683
}
16861684

16871685
gen ASMEND()

0 commit comments

Comments
 (0)