-
- noAlloc++;
- resolveIvalSym (sym->ival, sym->type);
- asym = newSymbol(sym->rname, 0);
- abSym = Safe_calloc(1, sizeof(absSym));
- abSym->name = Safe_strdup( sym->rname );
- abSym->address = SPEC_ADDR( sym->etype );
- addSet(&absSymSet, abSym);
-
- pb = pic16_newpCodeChain(NULL, 'A',pic16_newpCodeCharP("; Starting pCode block for absolute Ival"));
- pic16_addpBlock(pb);
-
- pcf = pic16_newpCodeFunction(moduleName, asym->name);
- PCF(pcf)->absblock = 1;
-
- pic16_addpCode2pBlock(pb,pcf);
- pic16_addpCode2pBlock(pb,pic16_newpCodeLabel(sym->rname,-1));
- pic16_printIval(sym, sym->type, sym->ival, 'p', (void *)pb);
- pic16_flushDB('p', (void *)pb);
-
- pic16_addpCode2pBlock(pb, pic16_newpCodeFunction(NULL, NULL));
- noAlloc--;
- }
- else
- {
-
- /* allocate space */
- fprintf (code->oFile, "%s:\n", sym->rname);
- /* special case for character strings */
- if (IS_ARRAY (sym->type) && IS_CHAR (sym->type->next) &&
- SPEC_CVAL (sym->etype).v_char)
- pic16_pCodeConstString(sym->rname , SPEC_CVAL (sym->etype).v_char);
- /*printChar (code->oFile,
- SPEC_CVAL (sym->etype).v_char,
- strlen (SPEC_CVAL (sym->etype).v_char) + 1);*/
- else
- fprintf (code->oFile, "\t.ds\t0x%04x\n", (unsigned int) getSize (sym->type) & 0xffff);
- }
-
- } else {
-// fprintf(stderr, "%s:%d spec_absa is false for symbol: %s\n",
-// __FILE__, __LINE__, sym->name);
-
- if (options.debug || sym->level == 0)
- fprintf (code->oFile, " == .\n");
-
- /* if it has an initial value */
- if (sym->ival)
- {
- pBlock *pb;
-
- fprintf (code->oFile, "%s:\n", sym->rname);
- noAlloc++;
- resolveIvalSym (sym->ival, sym->type);
-
- pb = pic16_newpCodeChain(NULL, 'P',pic16_newpCodeCharP("; Starting pCode block for Ival"));
- pic16_addpBlock(pb);
- pic16_addpCode2pBlock(pb,pic16_newpCodeLabel(sym->rname,-1));
-
- pic16_printIval(sym, sym->type, sym->ival, 'p', (void *)pb);
- pic16_flushDB('p', (void *)pb);
- noAlloc--;
- }
- else
- {
-
- /* allocate space */
- fprintf (code->oFile, "%s:\n", sym->rname);
- /* special case for character strings */
- if (IS_ARRAY (sym->type) && IS_CHAR (sym->type->next) &&
- SPEC_CVAL (sym->etype).v_char)
- pic16_pCodeConstString(sym->rname , SPEC_CVAL (sym->etype).v_char);
- /*printChar (code->oFile,
- SPEC_CVAL (sym->etype).v_char,
- strlen (SPEC_CVAL (sym->etype).v_char) + 1);*/
- else
- fprintf (code->oFile, "\t.ds\t0x%04x\n", (unsigned int) getSize (sym->type) & 0xffff);
- }
- }
- }