]> git.gag.com Git - fw/sdcc/commitdiff
* src/SDCCicode.c (operandOperation): added GETABIT, GETBYTE, GETWORD and
authormaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 26 Sep 2005 20:03:55 +0000 (20:03 +0000)
committermaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 26 Sep 2005 20:03:55 +0000 (20:03 +0000)
  GETHBIT

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3900 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/SDCCicode.c

index e4ff2268f469c86da383b011fb4bb807adb9c6e9..070ee74f4e0656cd70d29a60b39bfbf972f1d8e7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-26 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/SDCCicode.c (operandOperation): added GETABIT, GETBYTE, GETWORD and
+         GETHBIT
+
 2005-09-25 Maarten Brock <sourceforge.brock AT dse.nl>
 
        * doc/sdccman.lyx: updated Highest Order Bit documentation,
index f9e22e60d9f9d99984ee71f583180c6ebc02ef7b..831dfd6df7421752d9435d78db9a0364507ece09 100644 (file)
@@ -1392,6 +1392,23 @@ operandOperation (operand * left, operand * right,
                                  (i >> 1));
       }
       break;
+    case GETABIT:
+      retval = operandFromLit (((TYPE_UDWORD)operandLitValue(left) >>
+                                (TYPE_UDWORD)operandLitValue(right)) & 1);
+      break;
+    case GETBYTE:
+      retval = operandFromLit (((TYPE_UDWORD)operandLitValue(left) >>
+                                (TYPE_UDWORD)operandLitValue(right)) & 0xFF);
+      break;
+    case GETWORD:
+      retval = operandFromLit (((TYPE_UDWORD)operandLitValue(left) >>
+                                (TYPE_UDWORD)operandLitValue(right)) & 0xFFFF);
+      break;
+
+    case GETHBIT:
+      retval = operandFromLit (((TYPE_UDWORD)operandLitValue(left) >>
+                                ((getSize (let) * 8) - 1)) & 1);
+      break;
 
     case UNARYMINUS:
       retval = operandFromValue (valCastLiteral (type,