From: MaartenBrock Date: Thu, 18 May 2006 10:54:34 +0000 (+0000) Subject: * src/mcs51/gen.c (genCodePointerGet): inc dptr instead of loading acc X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=d3bf3a4a35c3e0b60249b6adb4d14ebfb58057f4;p=fw%2Fsdcc * src/mcs51/gen.c (genCodePointerGet): inc dptr instead of loading acc with offset * src/mcs51/peeph.def (186.x): updated and reenabled to fix bugs 1489016, 1434401 and 1490124 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4177 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 35c6bea1..05c00c79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-05-18 Maarten Brock + + * src/mcs51/gen.c (genCodePointerGet): inc dptr instead of loading acc + with offset + * src/mcs51/peeph.def (186.x): updated and reenabled to fix bugs + 1489016, 1434401 and 1490124 + 2006-05-17 Borut Razem * support/Util/dbuf.c: fixed bug #1489008 fix dbuf_c_str(), diff --git a/src/mcs51/gen.c b/src/mcs51/gen.c index 52889d3f..baaf2664 100644 --- a/src/mcs51/gen.c +++ b/src/mcs51/gen.c @@ -9868,21 +9868,12 @@ genCodePointerGet (operand * left, while (size--) { - if (pi) - { - emitcode ("clr", "a"); - emitcode ("movc", "a,@a+dptr"); - if (!ifx) - aopPut (result, "a", offset++, isOperandVolatile (result, FALSE)); - emitcode ("inc", "dptr"); - } - else - { - emitcode ("mov", "a,#0x%02x", offset); - emitcode ("movc", "a,@a+dptr"); - if (!ifx) - aopPut (result, "a", offset++, isOperandVolatile (result, FALSE)); - } + emitcode ("clr", "a"); + emitcode ("movc", "a,@a+dptr"); + if (!ifx) + aopPut (result, "a", offset++, isOperandVolatile (result, FALSE)); + if (size || pi) + emitcode ("inc", "dptr"); } } diff --git a/src/mcs51/peeph.def b/src/mcs51/peeph.def index e0aed8b3..b2c40335 100644 --- a/src/mcs51/peeph.def +++ b/src/mcs51/peeph.def @@ -1449,7 +1449,8 @@ replace { mov %1,a } if notVolatile %1 -replace { +// char indexed access to: long code table[] = {4,3,2,1}; +replace restart { add a,#%1 mov dpl,a clr a @@ -1468,25 +1469,28 @@ replace { mov %4,a inc dptr clr a + movc a,@a+dptr } by { ; Peephole 186.a optimized movc sequence + mov b,a mov dptr,#%1 - mov b,acc movc a,@a+dptr mov %2,a - mov acc,b inc dptr + mov a,b movc a,@a+dptr mov %3,a - mov acc,b inc dptr + mov a,b movc a,@a+dptr mov %4,a - mov acc,b inc dptr + mov a,b + movc a,@a+dptr } -replace { +// char indexed access to: void* code table[] = {4,3,2,1}; +replace restart { add a,#%1 mov dpl,a clr a @@ -1501,21 +1505,24 @@ replace { mov %3,a inc dptr clr a + movc a,@a+dptr } by { ; Peephole 186.b optimized movc sequence + mov b,a mov dptr,#%1 - mov b,acc movc a,@a+dptr mov %2,a - mov acc,b inc dptr + mov a,b movc a,@a+dptr mov %3,a - mov acc,b inc dptr + mov a,b + movc a,@a+dptr } -replace { +// char indexed access to: int code table[] = {4,3,2,1}; +replace restart { add a,#%1 mov dpl,a clr a @@ -1526,31 +1533,31 @@ replace { mov %2,a inc dptr clr a + movc a,@a+dptr } by { ; Peephole 186.c optimized movc sequence + mov %2,a mov dptr,#%1 - mov b,acc movc a,@a+dptr - mov %2,a - mov acc,b + xch a,%2 inc dptr + movc a,@a+dptr } -// disabled due to bug #1434401 -//// char indexed access to: char code table[] = {4,3,2,1}; -//replace { -// add a,#%1 -// mov dpl,a -// clr a -// addc a,#(%1 >> 8) -// mov dph,a -// clr a -// movc a,@a+dptr -//} by { -// ; Peephole 186.d optimized movc sequence -// mov dptr,#%1 -// movc a,@a+dptr -//} +// char indexed access to: char code table[] = {4,3,2,1}; +replace { + add a,#%1 + mov dpl,a + clr a + addc a,#(%1 >> 8) + mov dph,a + clr a + movc a,@a+dptr +} by { + ; Peephole 186.d optimized movc sequence + mov dptr,#%1 + movc a,@a+dptr +} // char indexed access to: int code table[] = {4,3,2,1}; replace {