(genAnd): accessing LSB/MSB by rotating acc
authorfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 29 Jan 2005 19:37:28 +0000 (19:37 +0000)
committerfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 29 Jan 2005 19:37:28 +0000 (19:37 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3660 4a8a32a2-be11-0410-ad9d-d568d2c75423

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
             {