Ignore:
Timestamp:
Feb 10, 2018, 8:56:10 AM (2 years ago)
Author:
matszpk
Message:

CLRadeonExtender: Asm: Prepare resolving section differences in main assembler code (in this same places where symbol resolving is possible later).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdasm/AsmPseudoOps.cpp

    r3639 r3764  
    701701                // put directly to section
    702702                cxuint sectionId;
    703                 if (expr->evaluate(asmr, value, sectionId))
     703                AsmTryStatus  evalStatus = expr->tryEvaluate(asmr, value, sectionId,
     704                                        asmr.withSectionDiffs());
     705                if (evalStatus == AsmTryStatus::SUCCESS)
    704706                {
    705707                    if (sectionId == ASMSECT_ABS)
     
    714716                    else
    715717                        asmr.printError(exprPlace, "Expression must be absolute!");
     718                }
     719                else if (evalStatus == AsmTryStatus::TRY_LATER)
     720                {
     721                    // if section diffs to resolve later
     722                    expr->setTarget(AsmExprTarget::dataTarget<T>(
     723                                    asmr.currentSection, asmr.currentOutPos));
     724                    asmr.unevalExpressions.push_back(expr.release());
     725                    asmr.reserveData(sizeof(T));
    716726                }
    717727            }
Note: See TracChangeset for help on using the changeset viewer.