From: kvigor Date: Fri, 29 Sep 2000 16:19:08 +0000 (+0000) Subject: emitcodePointerGet was badly broken X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=09cabaaaf454be8ff79eb039bbc08bdfd296a317;p=fw%2Fsdcc emitcodePointerGet was badly broken git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@418 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/src/ds390/gen.c b/src/ds390/gen.c index 92089ca8..db46a30f 100644 --- a/src/ds390/gen.c +++ b/src/ds390/gen.c @@ -6946,7 +6946,7 @@ static void emitcodePointerGet (operand *left, } /* so dptr know contains the address */ freeAsmop(left,NULL,ic,TRUE); - aopOp(result,ic,FALSE, FALSE); + aopOp(result,ic,FALSE, TRUE); /* if bit then unpack */ if (IS_BITVAR(retype)) @@ -6955,13 +6955,19 @@ static void emitcodePointerGet (operand *left, size = AOP_SIZE(result); offset = 0 ; - while (size--) { + _startLazyDPSEvaluation(); + while (size--) + { + genSetDPTR(0); + _flushLazyDPS(); + emitcode("clr","a"); emitcode("movc","a,@a+dptr"); - aopPut(AOP(result),"a",offset++); if (size) - emitcode("inc","dptr"); + emitcode("inc","dptr"); + aopPut(AOP(result),"a",offset++); } + _endLazyDPSEvaluation(); } freeAsmop(result,NULL,ic,TRUE);