new version
authorTobias Girstmair <t@thi3nkpad.lan>
Sat, 17 Nov 2018 20:12:26 +0000 (21:12 +0100)
committerTobias Girstmair <t@thi3nkpad.lan>
Sat, 17 Nov 2018 20:12:26 +0000 (21:12 +0100)
fakeasm.h
foo.c

index de0898f..0e31859 100644 (file)
--- a/fakeasm.h
+++ b/fakeasm.h
@@ -15,6 +15,7 @@
 #define SUB(x,y)  x -= y; //TODO: carry
 #define SUBI(x,n) x -= (u8)n; //TODO: carry
 #define INC(x)    x++; //WARN: does not set carry
+#define DEC(x)    x--; sr_zero=!x;
 #define MOV(x,y)  x = y;
 #define LDI(x,n)  x = n;
 #define SBRC(x,b) if (x & 1<<b) //skip if cleared => do if set
@@ -25,6 +26,7 @@
 int sr_zero = 0; //status register zero bit
 #define TST(x)    if(x==0)sr_zero=1;else sr_zero=0; //WARN: not a complete TST mockup
 #define BREQ(l)   if(sr_zero) goto l;
+#define BRNE(l)   if(!sr_zero) goto l;
 int carry = 0; //status register carry bit //WARN: not respected by all mocked instructions
 int asmtmp = 0;
 #define ROL(x) asmtmp = x>>7; x <<= 1; x |= carry; carry = asmtmp;
diff --git a/foo.c b/foo.c
index 6333bf1..45e0261 100644 (file)
--- a/foo.c
+++ b/foo.c
@@ -80,16 +80,16 @@ void g(void) {
        CLR     (a1)
        LDI     (loop, 8)
        mul:
-               SBRS    (t, 0)
-               RJMP    (skip2)
-               ADD     (a1, i0)
-               ADC     (a2, i1, carry)
-               skip2:
-               LSR     (a2)
-               ROR     (a1)
-               ROR     (t)
-               loop--;
-               if (loop) goto mul;
+       SBRS    (t, 0)
+       RJMP    (skip2)
+       ADD     (a1, i0)
+       ADC     (a2, i1, carry)
+       skip2:
+       LSR     (a2)
+       ROR     (a1)
+       ROR     (t)
+       DEC     (loop)
+       BRNE    (mul)
        MOV     (t, a1)
        #undef a0
        #undef a1
Imprint / Impressum