From c567623b8dd6c160b2a15f2bfb004ab4d839f036 Mon Sep 17 00:00:00 2001 From: maartenbrock Date: Mon, 26 Sep 2005 20:03:55 +0000 Subject: [PATCH] * src/SDCCicode.c (operandOperation): added GETABIT, GETBYTE, GETWORD and GETHBIT git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3900 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 5 +++++ src/SDCCicode.c | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/ChangeLog b/ChangeLog index e4ff2268..070ee74f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-09-26 Maarten Brock + + * src/SDCCicode.c (operandOperation): added GETABIT, GETBYTE, GETWORD and + GETHBIT + 2005-09-25 Maarten Brock * doc/sdccman.lyx: updated Highest Order Bit documentation, diff --git a/src/SDCCicode.c b/src/SDCCicode.c index f9e22e60..831dfd6d 100644 --- a/src/SDCCicode.c +++ b/src/SDCCicode.c @@ -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, -- 2.30.2