From 3b86ca43b781401860999f0348ab9f03ee109567 Mon Sep 17 00:00:00 2001 From: Tobias Girstmair Date: Tue, 13 Nov 2018 00:28:04 +0100 Subject: [PATCH] new version --- foo.c | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/foo.c b/foo.c index 61923b2..4d3cd18 100644 --- a/foo.c +++ b/foo.c @@ -6,7 +6,10 @@ u8 data[] = { 0x84, 0x9d, 0xb0, 0x69, 0x9d, 0x84, 0x69, 0x58, 0x75, 0x8c, 0xb0, 0x69, 0x8c, 0x75, 0x69, 0x58 }; -u8 g(int i, u8 x, u8 t, u8 o) { +u8 x; +u8 t; +u8 o; +u8 g(int i) { u8 tmp; ANDI (t, 0x07) tmp = i >> 16; @@ -31,10 +34,30 @@ int main(void) { acc = 0; n = i >> 14; s = i >> 17; - acc += g(i, 1, n, 12); - acc += g(i, s, n ^ i >> 13, 10); - acc += g(i, s / 3, n + ((i >> 11) % 3), 10); - acc += g(i, s / 5, 8 + n - ((i >> 10) % 3), 9); + + //voice 1: + LDI (x, 1) + MOV (t, n) + LDI (o, 12) + acc += g(i); + + //voice 2: + MOV (x, s) + t = n ^ i >> 13; + LDI (o, 10) + acc += g(i); + + //voice 3: + x = s / 3; + t = n + ((i >> 11) % 3); + LDI (o, 10) + acc += g(i); + + //voice 4: + x = s / 5; + t = 8 + n - ((i >> 10) % 3); + LDI (o, 9) + acc += g(i); putchar(acc<<4); } } -- 2.39.3