* src/SDCC.y: added tokens GETABIT, GETBYTE, GETWORD
authormaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 25 Sep 2005 10:39:17 +0000 (10:39 +0000)
committermaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 25 Sep 2005 10:39:17 +0000 (10:39 +0000)
commit411a4bf70f7e46852d1ff250a7512c504ea71810
treeecda9fdf524c2cb4ad3a588da38bb92630526bed
parentf8dc9d8f924a08b854d4784fdb4b841b7b006081
* src/SDCC.y: added tokens GETABIT, GETBYTE, GETWORD
* src/SDCCast.c (optimizeGetHbit): updated to also accept bool=expr&(1<<n),
  (optimizeGetAbit): new, to get any bit, not only the high bit,
  (optimizeGetByte): new, to get a byte from a (long) int: expr>>(8*n),
  (optimizeGetWord): new, to get a word from a long int: expr>>(8*n),
  (isConformingBody): also check GETABIT, GETBYTE, GETWORD,
  (decorateType): '&': also try GETABIT, GETBYTE, GETWORD optimization,
    RIGHT_OP: also try GETBYTE, GETWORD optimization,
    GETABIT, GETBYTE, GETWORD: decorate them,
  (isShiftRightLitVal, isBitAndPowOf2): new helper functions,
  (ast_print): added GETABIT, GETBYTE, GETWORD
* src/SDCCcse.c (isSignedOp): added GETABIT, GETBYTE, GETWORD
* src/SDCCicode.c (codeTable): added GETABIT, GETBYTE, GETWORD,
  (geniCodeBinary): new generic binary icode,
  (ast2iCode): added GETABIT, GETBYTE, GETWORD
* src/port.h: updated comment for PORT.hasExtBitOp
* src/mcs51/gen.c (genGetAbit): new, to get any single bit,
  (genGetByte): new, to get a single byte,
  (genGetWord): new, to get a word from a long,
  (gen51Code): added GETABIT, GETBYTE, GETWORD
* src/mcs51/main.c (hasExtBitOp): added GETABIT, GETBYTE, GETWORD

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3898 4a8a32a2-be11-0410-ad9d-d568d2c75423
ChangeLog
src/SDCC.y
src/SDCCast.c
src/SDCCcse.c
src/SDCCicode.c
src/mcs51/gen.c
src/mcs51/main.c
src/port.h