+
+ if (sym->onStack && options.stack10bit)
+ {
+ /* It's on the 10 bit stack, which is located in
+ * far data space.
+ */
+
+ if (result)
+ {
+ fprintf(stderr,
+ "*** Internal error: 10 bit stack var used as result.\n");
+ emitcode(";", "look at me!");
+ }
+
+
+ if ( _G.accInUse )
+ emitcode("push","acc");
+
+ emitcode("mov","a,_bp");
+ emitcode("add","a,#0x%02x",
+ ((sym->stack < 0) ?
+ ((char)(sym->stack - _G.nRegsSaved )) :
+ ((char)sym->stack)) & 0xff);
+
+ if (/* result */ 1)
+ {
+ emitcode (";", "#switchDPTR(2)");
+ }
+ emitcode ("mov","dpx,#0x40");
+ emitcode ("mov","dph,#0x00");
+ emitcode ("mov", "dpl, a");
+ if (/* result */ 1)
+ {
+ emitcode (";", "#switchDPTR(1)");
+ }
+
+ if ( _G.accInUse )
+ emitcode("pop","acc");
+
+ if (/* !result */ 0)
+ {
+ sym->aop = aop = newAsmop(AOP_DPTR);
+ }
+ else
+ {
+ sym->aop = aop = newAsmop(AOP_DPTR2);
+ }
+ aop->size = getSize(sym->type);
+ return aop;
+ }