From 09cabaaaf454be8ff79eb039bbc08bdfd296a317 Mon Sep 17 00:00:00 2001 From: kvigor Date: Fri, 29 Sep 2000 16:19:08 +0000 Subject: [PATCH] emitcodePointerGet was badly broken git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@418 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/ds390/gen.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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); -- 2.47.2