From 5d9a2389fcf604fb8689b90b654af4d5fc7ff9df Mon Sep 17 00:00:00 2001 From: Tobias Girstmair Date: Tue, 13 Nov 2018 19:07:54 +0100 Subject: [PATCH] new version move `x` out of g(), so we can use it as tempvar in g() --- foo.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/foo.c b/foo.c index 4f8d74c..8d512b4 100644 --- a/foo.c +++ b/foo.c @@ -67,7 +67,6 @@ void g(void) { LD t, X */ t = (((i1&0x1f)<<8|i0)*t)>>8; //TODO t >>= o; //NOTE: o == {1, 2, 4} - AND (t, x) ANDI (t, 3) RET //TODO: CALL/RET is expensive; store PC in register and RJMP, then JRMP back }; @@ -104,6 +103,7 @@ int main(void) { MOV (t, n) LDI (o, 4) RCALL g(); + AND (t, x) MOV (acc, t) //voice 2: @@ -122,6 +122,7 @@ int main(void) { EOR (t, n) LDI (o, 2) RCALL g(); + AND (t, x) ADD (acc, t) //voice 3: @@ -168,6 +169,7 @@ int main(void) { ADD (t, n) LDI (o, 2) RCALL g(); + AND (t, x) ADD (acc, t) //voice 4: @@ -216,6 +218,7 @@ int main(void) { SUBI (t, -8) LDI (o, 1) RCALL g(); + AND (t, x) ADD (acc, t) putchar(acc<<4); //TODO -- 2.39.3