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

index cffa6d8..de0898f 100644 (file)
--- a/fakeasm.h
+++ b/fakeasm.h
@@ -17,7 +17,8 @@
 #define INC(x)    x++; //WARN: does not set carry
 #define MOV(x,y)  x = y;
 #define LDI(x,n)  x = n;
-#define SBRC(x,b) if (x & b) //skip if cleared => do if set
+#define SBRC(x,b) if (x & 1<<b) //skip if cleared => do if set
+#define SBRS(x,b) if (!(x & 1<<b)) //skip if set => do if not
 #define CLR(x)    x = 0;
 #define RET       return;
 #define RCALL    //pseudo
@@ -32,3 +33,4 @@ int asmtmp = 0;
 int sr_neg = 0;
 #define CPI(x,n)  sr_neg = (x-n < 0); //WARN: not a complete CPI mockup
 #define BRPL(l)   if (sr_neg) goto l;
+#define RJMP(l)   goto l;
diff --git a/foo.c b/foo.c
index c9856b9..36cb7cd 100644 (file)
--- a/foo.c
+++ b/foo.c
@@ -82,10 +82,13 @@ void g(void) {
        #define a0 t
 
        for (u8 loop = 0; loop < 8; loop++) { //Note: t&2 always zero
+               SBRS    (t, 0)
+               goto skip2;
                if (t & 1) {
                        ADD     (a1, i0)
                        ADC     (a2, i1, carry)
                }
+               skip2:
                LSR     (a2)
                ROR     (a1)
                ROR     (t)
Imprint / Impressum