(genAnd): accessing LSB/MSB by rotating acc
[fw/sdcc] / src / mcs51 / gen.c
index 84c20daf674c1aff14b3e3fc3b17d205696cae2b..9dc79416ed9b0b191d10efce8e0c3dfdbf103e93 100644 (file)
@@ -5779,7 +5779,17 @@ genAnd (iCode * ic, iCode * ifx)
           MOVA (aopGet (AOP (left), posbit >> 3, FALSE, FALSE));
           // bit = left & 2^n
           if (size)
-            emitcode ("mov", "c,acc.%d", posbit & 0x07);
+            {
+              switch (posbit & 0x07)
+                {
+                  case 0: emitcode ("rrc", "a");
+                          break;
+                  case 7: emitcode ("rlc", "a");
+                          break;
+                  default: emitcode ("mov", "c,acc.%d", posbit & 0x07);
+                          break;
+                }            
+            }
           // if(left &  2^n)
           else
             {