ref: 607f3bc55c2425c7e7d022961517793eb20f3b74
parent: 2e120a29db72b3fbe104d6168f2837f64c738e2e
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Sep 3 13:01:56 EDT 2016
5l: format assembly constant right shift encoding 0 as >>32
--- a/sys/src/cmd/5l/list.c
+++ b/sys/src/cmd/5l/list.c
@@ -143,8 +143,12 @@
op = "<<>>->@>" + (((v>>5) & 3) << 1);
if(v & (1<<4))
snprint(str, sizeof str, "R%ld%c%cR%ld", v&15, op[0], op[1], (v>>8)&15);
- else
- snprint(str, sizeof str, "R%ld%c%c%ld", v&15, op[0], op[1], (v>>7)&31);
+ else {
+ long sh = (v>>7)&31;
+ if(sh == 0 && (v & (3<<5)) != 0)
+ sh = 32;
+ snprint(str, sizeof str, "R%ld%c%c%ld", v&15, op[0], op[1], sh);
+ }
if(a->reg != NREG)
snprint(str+strlen(str), sizeof(str)-strlen(str), "(R%d)", a->reg);
break;