本文整理汇总了C++中TransformationParameters::architecture方法的典型用法代码示例。如果您正苦于以下问题:C++ TransformationParameters::architecture方法的具体用法?C++ TransformationParameters::architecture怎么用?C++ TransformationParameters::architecture使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TransformationParameters
的用法示例。
在下文中一共展示了TransformationParameters::architecture方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: precompileArguments
FinalRepresentation
IntermediateRepresentator::transform(const TransformationParameters& parameters,
const CompileErrorList& parsingErrors,
MemoryAccess& memoryAccess) {
auto errors = parsingErrors;
if (_currentOutput) {
errors.pushError(_currentOutput->positionInterval(),
"Macro not closed. Missing a macro end directive?");
}
PrecompileImmutableArguments precompileArguments(parameters.architecture(),
parameters.generator());
SymbolGraph graph;
MacroDirectiveTable macroTable;
for (const auto& command : _commandList) {
command->precompile(precompileArguments, errors, graph, macroTable);
}
IntermediateMacroInstruction::replaceWithMacros(
_commandList.begin(), _commandList.end(), macroTable, errors);
auto macroList = generateMacroInformation();
auto preliminaryEvaluation = graph.evaluate();
if (!evaluateGraph(preliminaryEvaluation, errors)) {
return FinalRepresentation({}, errors, macroList);
}
SymbolReplacer preliminaryReplacer(preliminaryEvaluation);
MemoryAllocator allocator(parameters.allocator());
SectionTracker tracker;
auto allowedSize = memoryAccess.getMemorySize().get();
IntermediateOperationPointer firstMemoryExceedingOperation(nullptr);
AllocateMemoryImmutableArguments allocateMemoryArguments(precompileArguments,
preliminaryReplacer);
for (const auto& command : _commandList) {
command->allocateMemory(
allocateMemoryArguments, errors, allocator, tracker);
if (allocator.estimateSize() > allowedSize &&
!firstMemoryExceedingOperation) {
firstMemoryExceedingOperation = command;
}
}
auto allocatedSize = allocator.calculatePositions();
EnhanceSymbolTableImmutableArguments symbolTableArguments(
allocateMemoryArguments, allocator);
for (const auto& command : _commandList) {
command->enhanceSymbolTable(symbolTableArguments, errors, graph);
}
auto graphEvaluation = graph.evaluate();
auto graphValid = evaluateGraph(graphEvaluation, errors);
auto memoryValid = checkMemorySize(
allocatedSize, allowedSize, firstMemoryExceedingOperation, errors);
if (!(graphValid && memoryValid)) {
return FinalRepresentation({}, errors, macroList);
}
SymbolReplacer replacer(graphEvaluation);
ExecuteImmutableArguments executeArguments(symbolTableArguments, replacer);
FinalCommandVector commandOutput;
for (const auto& command : _commandList) {
command->execute(executeArguments, errors, commandOutput, memoryAccess);
}
return FinalRepresentation(commandOutput, errors, macroList);
}