new version
authorTobias Girstmair <t@thi3nkpad.lan>
Mon, 12 Nov 2018 23:28:04 +0000 (00:28 +0100)
committerTobias Girstmair <t@thi3nkpad.lan>
Mon, 12 Nov 2018 23:28:04 +0000 (00:28 +0100)
foo.c

diff --git a/foo.c b/foo.c
index 61923b22112d65d1f1d7681a06ba19e595775a8f..4d3cd189849d6378fbb461d76fde8e4e738df358 100644 (file)
--- 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);
        }
 }
Imprint / Impressum