@jhlagado/azm 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +110 -78
- package/dist/src/api-compile.d.ts +0 -2
- package/dist/src/api-compile.js +2 -9
- package/dist/src/assembly/address-planning.js +21 -1
- package/dist/src/assembly/program-emission.js +1 -0
- package/dist/src/cli/parse-args.d.ts +0 -1
- package/dist/src/cli/parse-args.js +0 -7
- package/dist/src/cli/write-artifacts.js +0 -11
- package/dist/src/core/compile.js +192 -9
- package/dist/src/expansion/op-expansion.js +2 -0
- package/dist/src/model/expression.d.ts +4 -0
- package/dist/src/model/source-item.d.ts +11 -0
- package/dist/src/outputs/index.js +0 -2
- package/dist/src/outputs/types.d.ts +3 -16
- package/dist/src/outputs/write-asm80.js +206 -5
- package/dist/src/register-care/analyze.js +36 -8
- package/dist/src/register-care/annotations.js +33 -146
- package/dist/src/register-care/fix.d.ts +2 -0
- package/dist/src/register-care/fix.js +52 -0
- package/dist/src/register-care/instruction-shape.d.ts +11 -0
- package/dist/src/register-care/instruction-shape.js +129 -0
- package/dist/src/register-care/liveness.js +15 -7
- package/dist/src/register-care/profiles.js +4 -0
- package/dist/src/register-care/programModel.js +79 -13
- package/dist/src/register-care/report.d.ts +2 -1
- package/dist/src/register-care/report.js +91 -34
- package/dist/src/register-care/routine-summaries.d.ts +6 -0
- package/dist/src/register-care/routine-summaries.js +89 -0
- package/dist/src/register-care/summaries.d.ts +3 -3
- package/dist/src/register-care/summaries.js +42 -75
- package/dist/{legacy-root-azm/src/registerCare → src/register-care}/summary.js +33 -51
- package/dist/src/register-care/types.d.ts +6 -1
- package/dist/src/semantics/expression-evaluation.d.ts +7 -3
- package/dist/src/semantics/expression-evaluation.js +57 -0
- package/dist/src/source/strip-line-comment.d.ts +2 -0
- package/dist/src/source/strip-line-comment.js +26 -0
- package/dist/src/syntax/directive-aliases.js +9 -10
- package/dist/src/syntax/parse-diagnostics.d.ts +12 -0
- package/dist/src/syntax/parse-diagnostics.js +18 -0
- package/dist/src/syntax/parse-expression.js +34 -9
- package/dist/src/syntax/parse-line.js +150 -54
- package/dist/src/tooling/case-style.js +3 -0
- package/docs/reference/cli.md +6 -4
- package/docs/reference/tooling-api.md +13 -9
- package/package.json +4 -6
- package/dist/legacy-root-azm/src/analysis.d.ts +0 -11
- package/dist/legacy-root-azm/src/analysis.js +0 -41
- package/dist/legacy-root-azm/src/compile.d.ts +0 -10
- package/dist/legacy-root-azm/src/compile.js +0 -186
- package/dist/legacy-root-azm/src/compileShared.d.ts +0 -3
- package/dist/legacy-root-azm/src/compileShared.js +0 -7
- package/dist/legacy-root-azm/src/diagnosticTypes.d.ts +0 -77
- package/dist/legacy-root-azm/src/diagnosticTypes.js +0 -53
- package/dist/legacy-root-azm/src/formats/index.d.ts +0 -7
- package/dist/legacy-root-azm/src/formats/index.js +0 -17
- package/dist/legacy-root-azm/src/formats/range.d.ts +0 -17
- package/dist/legacy-root-azm/src/formats/range.js +0 -45
- package/dist/legacy-root-azm/src/formats/types.d.ts +0 -283
- package/dist/legacy-root-azm/src/formats/types.js +0 -1
- package/dist/legacy-root-azm/src/formats/writeAsm80.d.ts +0 -6
- package/dist/legacy-root-azm/src/formats/writeAsm80.js +0 -86
- package/dist/legacy-root-azm/src/formats/writeBin.d.ts +0 -7
- package/dist/legacy-root-azm/src/formats/writeBin.js +0 -23
- package/dist/legacy-root-azm/src/formats/writeD8m.d.ts +0 -9
- package/dist/legacy-root-azm/src/formats/writeD8m.js +0 -245
- package/dist/legacy-root-azm/src/formats/writeHex.d.ts +0 -8
- package/dist/legacy-root-azm/src/formats/writeHex.js +0 -38
- package/dist/legacy-root-azm/src/formats/writeListing.d.ts +0 -8
- package/dist/legacy-root-azm/src/formats/writeListing.js +0 -83
- package/dist/legacy-root-azm/src/frontend/asm80/asmLine.d.ts +0 -39
- package/dist/legacy-root-azm/src/frontend/asm80/asmLine.js +0 -89
- package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.d.ts +0 -4
- package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.js +0 -94
- package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.d.ts +0 -10
- package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.js +0 -25
- package/dist/legacy-root-azm/src/frontend/ast.d.ts +0 -376
- package/dist/legacy-root-azm/src/frontend/ast.js +0 -1
- package/dist/legacy-root-azm/src/frontend/directiveAliases.d.ts +0 -14
- package/dist/legacy-root-azm/src/frontend/directiveAliases.js +0 -189
- package/dist/legacy-root-azm/src/frontend/grammarData.d.ts +0 -14
- package/dist/legacy-root-azm/src/frontend/grammarData.js +0 -65
- package/dist/legacy-root-azm/src/frontend/immExprUtils.d.ts +0 -2
- package/dist/legacy-root-azm/src/frontend/immExprUtils.js +0 -12
- package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.d.ts +0 -17
- package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.js +0 -187
- package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.d.ts +0 -3
- package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.js +0 -73
- package/dist/legacy-root-azm/src/frontend/parseAsmStatements.d.ts +0 -6
- package/dist/legacy-root-azm/src/frontend/parseAsmStatements.js +0 -16
- package/dist/legacy-root-azm/src/frontend/parseAsmStream.d.ts +0 -10
- package/dist/legacy-root-azm/src/frontend/parseAsmStream.js +0 -33
- package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.d.ts +0 -18
- package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.js +0 -34
- package/dist/legacy-root-azm/src/frontend/parseDiagnostics.d.ts +0 -9
- package/dist/legacy-root-azm/src/frontend/parseDiagnostics.js +0 -16
- package/dist/legacy-root-azm/src/frontend/parseEnum.d.ts +0 -12
- package/dist/legacy-root-azm/src/frontend/parseEnum.js +0 -70
- package/dist/legacy-root-azm/src/frontend/parseImm.d.ts +0 -10
- package/dist/legacy-root-azm/src/frontend/parseImm.js +0 -397
- package/dist/legacy-root-azm/src/frontend/parseLogicalLines.d.ts +0 -11
- package/dist/legacy-root-azm/src/frontend/parseLogicalLines.js +0 -94
- package/dist/legacy-root-azm/src/frontend/parseOp.d.ts +0 -25
- package/dist/legacy-root-azm/src/frontend/parseOp.js +0 -120
- package/dist/legacy-root-azm/src/frontend/parseOpHeader.d.ts +0 -20
- package/dist/legacy-root-azm/src/frontend/parseOpHeader.js +0 -32
- package/dist/legacy-root-azm/src/frontend/parseOperands.d.ts +0 -4
- package/dist/legacy-root-azm/src/frontend/parseOperands.js +0 -290
- package/dist/legacy-root-azm/src/frontend/parseParams.d.ts +0 -6
- package/dist/legacy-root-azm/src/frontend/parseParams.js +0 -62
- package/dist/legacy-root-azm/src/frontend/parseParserRecovery.d.ts +0 -12
- package/dist/legacy-root-azm/src/frontend/parseParserRecovery.js +0 -17
- package/dist/legacy-root-azm/src/frontend/parseParserShared.d.ts +0 -2
- package/dist/legacy-root-azm/src/frontend/parseParserShared.js +0 -8
- package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.d.ts +0 -1
- package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.js +0 -3
- package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.d.ts +0 -7
- package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.js +0 -142
- package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.d.ts +0 -34
- package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.js +0 -177
- package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.d.ts +0 -46
- package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.js +0 -53
- package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.d.ts +0 -16
- package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.js +0 -68
- package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.d.ts +0 -11
- package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.js +0 -50
- package/dist/legacy-root-azm/src/frontend/parseTypes.d.ts +0 -24
- package/dist/legacy-root-azm/src/frontend/parseTypes.js +0 -77
- package/dist/legacy-root-azm/src/frontend/parser.d.ts +0 -11
- package/dist/legacy-root-azm/src/frontend/parser.js +0 -88
- package/dist/legacy-root-azm/src/frontend/source.d.ts +0 -28
- package/dist/legacy-root-azm/src/frontend/source.js +0 -58
- package/dist/legacy-root-azm/src/frontend/sourceExtensions.d.ts +0 -2
- package/dist/legacy-root-azm/src/frontend/sourceExtensions.js +0 -6
- package/dist/legacy-root-azm/src/lintCaseStyle.d.ts +0 -4
- package/dist/legacy-root-azm/src/lintCaseStyle.js +0 -129
- package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.js +0 -229
- package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.d.ts +0 -47
- package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.js +0 -52
- package/dist/legacy-root-azm/src/lowering/asmEquResolution.d.ts +0 -8
- package/dist/legacy-root-azm/src/lowering/asmEquResolution.js +0 -69
- package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.d.ts +0 -15
- package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.js +0 -102
- package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.d.ts +0 -5
- package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.js +0 -54
- package/dist/legacy-root-azm/src/lowering/asmInstructionStream.d.ts +0 -46
- package/dist/legacy-root-azm/src/lowering/asmInstructionStream.js +0 -51
- package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.d.ts +0 -43
- package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.js +0 -254
- package/dist/legacy-root-azm/src/lowering/asmLoweringHost.d.ts +0 -23
- package/dist/legacy-root-azm/src/lowering/asmLoweringHost.js +0 -1
- package/dist/legacy-root-azm/src/lowering/asmLoweringLd.d.ts +0 -28
- package/dist/legacy-root-azm/src/lowering/asmLoweringLd.js +0 -144
- package/dist/legacy-root-azm/src/lowering/asmRangeLowering.d.ts +0 -17
- package/dist/legacy-root-azm/src/lowering/asmRangeLowering.js +0 -39
- package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.d.ts +0 -16
- package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.js +0 -209
- package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.js +0 -9
- package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.js +0 -14
- package/dist/legacy-root-azm/src/lowering/asmUtils.d.ts +0 -13
- package/dist/legacy-root-azm/src/lowering/asmUtils.js +0 -105
- package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.d.ts +0 -54
- package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.js +0 -128
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.d.ts +0 -151
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.js +0 -16
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.js +0 -75
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.d.ts +0 -66
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.js +0 -166
- package/dist/legacy-root-azm/src/lowering/bytePlacement.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/bytePlacement.js +0 -37
- package/dist/legacy-root-azm/src/lowering/capabilities.d.ts +0 -67
- package/dist/legacy-root-azm/src/lowering/capabilities.js +0 -1
- package/dist/legacy-root-azm/src/lowering/eaResolution.d.ts +0 -58
- package/dist/legacy-root-azm/src/lowering/eaResolution.js +0 -159
- package/dist/legacy-root-azm/src/lowering/emissionCore.d.ts +0 -17
- package/dist/legacy-root-azm/src/lowering/emissionCore.js +0 -21
- package/dist/legacy-root-azm/src/lowering/emit.d.ts +0 -17
- package/dist/legacy-root-azm/src/lowering/emit.js +0 -46
- package/dist/legacy-root-azm/src/lowering/emitContextBuilder.d.ts +0 -63
- package/dist/legacy-root-azm/src/lowering/emitContextBuilder.js +0 -41
- package/dist/legacy-root-azm/src/lowering/emitFinalization.d.ts +0 -61
- package/dist/legacy-root-azm/src/lowering/emitFinalization.js +0 -66
- package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.d.ts +0 -19
- package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.js +0 -26
- package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.js +0 -119
- package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.js +0 -12
- package/dist/legacy-root-azm/src/lowering/emitPhase1Types.d.ts +0 -21
- package/dist/legacy-root-azm/src/lowering/emitPhase1Types.js +0 -1
- package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.d.ts +0 -70
- package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.js +0 -203
- package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.d.ts +0 -82
- package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.js +0 -55
- package/dist/legacy-root-azm/src/lowering/emitPipeline.d.ts +0 -121
- package/dist/legacy-root-azm/src/lowering/emitPipeline.js +0 -57
- package/dist/legacy-root-azm/src/lowering/emitProgramContext.d.ts +0 -39
- package/dist/legacy-root-azm/src/lowering/emitProgramContext.js +0 -29
- package/dist/legacy-root-azm/src/lowering/emitState.d.ts +0 -90
- package/dist/legacy-root-azm/src/lowering/emitState.js +0 -124
- package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.js +0 -23
- package/dist/legacy-root-azm/src/lowering/fixupEmission.d.ts +0 -64
- package/dist/legacy-root-azm/src/lowering/fixupEmission.js +0 -199
- package/dist/legacy-root-azm/src/lowering/immMath.d.ts +0 -2
- package/dist/legacy-root-azm/src/lowering/immMath.js +0 -34
- package/dist/legacy-root-azm/src/lowering/inputAssets.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/inputAssets.js +0 -106
- package/dist/legacy-root-azm/src/lowering/ldEncoding.d.ts +0 -15
- package/dist/legacy-root-azm/src/lowering/ldEncoding.js +0 -12
- package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.d.ts +0 -5
- package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.js +0 -124
- package/dist/legacy-root-azm/src/lowering/ldFormSelection.d.ts +0 -26
- package/dist/legacy-root-azm/src/lowering/ldFormSelection.js +0 -92
- package/dist/legacy-root-azm/src/lowering/ldLowering.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/ldLowering.js +0 -13
- package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.d.ts +0 -23
- package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.js +0 -185
- package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.d.ts +0 -13
- package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.js +0 -86
- package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.d.ts +0 -27
- package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.js +0 -215
- package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.d.ts +0 -202
- package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.js +0 -1
- package/dist/legacy-root-azm/src/lowering/loweredFormat.d.ts +0 -3
- package/dist/legacy-root-azm/src/lowering/loweredFormat.js +0 -26
- package/dist/legacy-root-azm/src/lowering/loweredItemSize.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/loweredItemSize.js +0 -17
- package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.d.ts +0 -9
- package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.js +0 -55
- package/dist/legacy-root-azm/src/lowering/loweringTypes.d.ts +0 -27
- package/dist/legacy-root-azm/src/lowering/loweringTypes.js +0 -1
- package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.d.ts +0 -9
- package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.js +0 -9
- package/dist/legacy-root-azm/src/lowering/opExpansionExecution.d.ts +0 -15
- package/dist/legacy-root-azm/src/lowering/opExpansionExecution.js +0 -45
- package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.d.ts +0 -15
- package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.js +0 -88
- package/dist/legacy-root-azm/src/lowering/opExpansionStream.d.ts +0 -12
- package/dist/legacy-root-azm/src/lowering/opExpansionStream.js +0 -176
- package/dist/legacy-root-azm/src/lowering/opMatching.d.ts +0 -52
- package/dist/legacy-root-azm/src/lowering/opMatching.js +0 -355
- package/dist/legacy-root-azm/src/lowering/opSubstitution.d.ts +0 -13
- package/dist/legacy-root-azm/src/lowering/opSubstitution.js +0 -175
- package/dist/legacy-root-azm/src/lowering/prescanTypes.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/prescanTypes.js +0 -1
- package/dist/legacy-root-azm/src/lowering/programLowering.d.ts +0 -144
- package/dist/legacy-root-azm/src/lowering/programLowering.js +0 -2
- package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.d.ts +0 -5
- package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.js +0 -5
- package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.d.ts +0 -18
- package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.js +0 -115
- package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.d.ts +0 -2
- package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.js +0 -93
- package/dist/legacy-root-azm/src/lowering/programPrescan.d.ts +0 -3
- package/dist/legacy-root-azm/src/lowering/programPrescan.js +0 -37
- package/dist/legacy-root-azm/src/lowering/traceFormat.d.ts +0 -13
- package/dist/legacy-root-azm/src/lowering/traceFormat.js +0 -211
- package/dist/legacy-root-azm/src/packageInfo.d.ts +0 -1
- package/dist/legacy-root-azm/src/packageInfo.js +0 -15
- package/dist/legacy-root-azm/src/pathCompare.d.ts +0 -3
- package/dist/legacy-root-azm/src/pathCompare.js +0 -26
- package/dist/legacy-root-azm/src/pipeline.d.ts +0 -91
- package/dist/legacy-root-azm/src/pipeline.js +0 -1
- package/dist/legacy-root-azm/src/registerCare/analyze.d.ts +0 -24
- package/dist/legacy-root-azm/src/registerCare/analyze.js +0 -327
- package/dist/legacy-root-azm/src/registerCare/boundaryHints.d.ts +0 -2
- package/dist/legacy-root-azm/src/registerCare/boundaryHints.js +0 -10
- package/dist/legacy-root-azm/src/registerCare/carriers.d.ts +0 -4
- package/dist/legacy-root-azm/src/registerCare/carriers.js +0 -78
- package/dist/legacy-root-azm/src/registerCare/controlFlow.d.ts +0 -5
- package/dist/legacy-root-azm/src/registerCare/controlFlow.js +0 -35
- package/dist/legacy-root-azm/src/registerCare/fix.d.ts +0 -11
- package/dist/legacy-root-azm/src/registerCare/fix.js +0 -119
- package/dist/legacy-root-azm/src/registerCare/liveness.d.ts +0 -7
- package/dist/legacy-root-azm/src/registerCare/liveness.js +0 -227
- package/dist/legacy-root-azm/src/registerCare/profiles.d.ts +0 -11
- package/dist/legacy-root-azm/src/registerCare/profiles.js +0 -45
- package/dist/legacy-root-azm/src/registerCare/programModel.d.ts +0 -3
- package/dist/legacy-root-azm/src/registerCare/programModel.js +0 -181
- package/dist/legacy-root-azm/src/registerCare/report.d.ts +0 -5
- package/dist/legacy-root-azm/src/registerCare/report.js +0 -139
- package/dist/legacy-root-azm/src/registerCare/smartComments.d.ts +0 -5
- package/dist/legacy-root-azm/src/registerCare/smartComments.js +0 -247
- package/dist/legacy-root-azm/src/registerCare/types.d.ts +0 -154
- package/dist/legacy-root-azm/src/registerCare/types.js +0 -1
- package/dist/legacy-root-azm/src/semantics/declVisitor.d.ts +0 -5
- package/dist/legacy-root-azm/src/semantics/declVisitor.js +0 -11
- package/dist/legacy-root-azm/src/semantics/env.d.ts +0 -28
- package/dist/legacy-root-azm/src/semantics/env.js +0 -432
- package/dist/legacy-root-azm/src/semantics/layout.d.ts +0 -21
- package/dist/legacy-root-azm/src/semantics/layout.js +0 -226
- package/dist/legacy-root-azm/src/semantics/layoutCastFold.d.ts +0 -22
- package/dist/legacy-root-azm/src/semantics/layoutCastFold.js +0 -118
- package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.d.ts +0 -2
- package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.js +0 -4
- package/dist/legacy-root-azm/src/semantics/typeQueries.d.ts +0 -31
- package/dist/legacy-root-azm/src/semantics/typeQueries.js +0 -124
- package/dist/legacy-root-azm/src/sourceIncludeExpansion.d.ts +0 -17
- package/dist/legacy-root-azm/src/sourceIncludeExpansion.js +0 -124
- package/dist/legacy-root-azm/src/sourceIncludePaths.d.ts +0 -1
- package/dist/legacy-root-azm/src/sourceIncludePaths.js +0 -12
- package/dist/legacy-root-azm/src/sourceLoader.d.ts +0 -15
- package/dist/legacy-root-azm/src/sourceLoader.js +0 -118
- package/dist/legacy-root-azm/src/z80/effects.d.ts +0 -3
- package/dist/legacy-root-azm/src/z80/effects.js +0 -516
- package/dist/legacy-root-azm/src/z80/encode.d.ts +0 -10
- package/dist/legacy-root-azm/src/z80/encode.js +0 -412
- package/dist/legacy-root-azm/src/z80/encodeAlu.d.ts +0 -7
- package/dist/legacy-root-azm/src/z80/encodeAlu.js +0 -219
- package/dist/legacy-root-azm/src/z80/encodeBitOps.d.ts +0 -7
- package/dist/legacy-root-azm/src/z80/encodeBitOps.js +0 -123
- package/dist/legacy-root-azm/src/z80/encodeContext.d.ts +0 -29
- package/dist/legacy-root-azm/src/z80/encodeContext.js +0 -1
- package/dist/legacy-root-azm/src/z80/encodeControl.d.ts +0 -26
- package/dist/legacy-root-azm/src/z80/encodeControl.js +0 -180
- package/dist/legacy-root-azm/src/z80/encodeCoreOps.d.ts +0 -7
- package/dist/legacy-root-azm/src/z80/encodeCoreOps.js +0 -131
- package/dist/legacy-root-azm/src/z80/encodeIo.d.ts +0 -9
- package/dist/legacy-root-azm/src/z80/encodeIo.js +0 -128
- package/dist/legacy-root-azm/src/z80/encodeLd.d.ts +0 -13
- package/dist/legacy-root-azm/src/z80/encodeLd.js +0 -273
- package/dist/legacy-root-azm/src/z80/encoderRegistry.d.ts +0 -13
- package/dist/legacy-root-azm/src/z80/encoderRegistry.js +0 -169
- package/dist/src/outputs/write-listing.d.ts +0 -2
- package/dist/src/outputs/write-listing.js +0 -79
- /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/annotate.d.ts +0 -0
- /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/annotate.js +0 -0
- /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/sourceText.d.ts +0 -0
- /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/sourceText.js +0 -0
- /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/summary.d.ts +0 -0
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Emit orchestration phases for `emitProgram`.
|
|
3
|
-
*
|
|
4
|
-
* Pipeline (conceptual):
|
|
5
|
-
*
|
|
6
|
-
* 1. **Workspace setup** — lives in `emit.ts`: placement byte maps, fixup queues, op registries,
|
|
7
|
-
* resolution helpers, and the program-lowering context (`createEmitProgramContext`). This
|
|
8
|
-
* phase wires mutable state and callbacks; it does not traverse the whole program yet.
|
|
9
|
-
*
|
|
10
|
-
* 2. **Prescan** — `runEmitPrescanPhase`: discover ops and
|
|
11
|
-
* raw-address names so later lowering can resolve symbols. Product: {@link PrescanResult}.
|
|
12
|
-
*
|
|
13
|
-
* 3. **Lowering** — `runEmitLoweringPhase`: traverse declarations and instruction streams, emit bytes
|
|
14
|
-
* into placement maps, enqueue fixups. Product: {@link LoweringResult}.
|
|
15
|
-
*
|
|
16
|
-
* 4. **Placement & artifacts** — `runEmitPlacementAndArtifactPhase`: fixup resolution,
|
|
17
|
-
* merged `EmittedByteMap`, symbol table, placed lowered-ASM program.
|
|
18
|
-
* Input: {@link EmitFinalizationContext} (built via {@link mergeEmitFinalizationContext}).
|
|
19
|
-
*
|
|
20
|
-
* Format writers stay in `compile.ts` / `PipelineDeps`; this module only produces the
|
|
21
|
-
* in-memory products they consume.
|
|
22
|
-
*/
|
|
23
|
-
import type { EmittedByteMap, SymbolEntry } from '../formats/types.js';
|
|
24
|
-
import { type EmitFinalizationContext } from './emitFinalization.js';
|
|
25
|
-
import type { LoweredAsmProgram, LoweredAsmStream } from './loweredAsmTypes.js';
|
|
26
|
-
import type { PrescanResult } from './prescanTypes.js';
|
|
27
|
-
import { type Context as ProgramLoweringContext, type LoweringResult, type PrescanContext } from './programLowering.js';
|
|
28
|
-
type EmitPrescanPhaseContext = PrescanContext;
|
|
29
|
-
type EmitPrescanPhaseResult = PrescanResult;
|
|
30
|
-
type EmitLoweringPhaseContext = ProgramLoweringContext;
|
|
31
|
-
interface EmitLoweringPhaseResult {
|
|
32
|
-
/** Next code-placement allocation offset after lowering. */
|
|
33
|
-
readonly codeOffset: LoweringResult['codeOffset'];
|
|
34
|
-
/** Next data-placement offset. */
|
|
35
|
-
readonly dataOffset: LoweringResult['dataOffset'];
|
|
36
|
-
/** Symbols still pending resolution. */
|
|
37
|
-
readonly pending: LoweringResult['pending'];
|
|
38
|
-
/** Emitted symbol table entries. */
|
|
39
|
-
readonly symbols: LoweringResult['symbols'];
|
|
40
|
-
/** Absolute-address symbols. */
|
|
41
|
-
readonly absoluteSymbols: LoweringResult['absoluteSymbols'];
|
|
42
|
-
/** Emitted code bytes map. */
|
|
43
|
-
readonly codeBytes: LoweringResult['codeBytes'];
|
|
44
|
-
/** Emitted data bytes map. */
|
|
45
|
-
readonly dataBytes: LoweringResult['dataBytes'];
|
|
46
|
-
}
|
|
47
|
-
/** Options for `emitProgram` (include paths, policy flags, listing sources). */
|
|
48
|
-
export type EmitProgramOptions = {
|
|
49
|
-
/** Extra include directories for `include` / assets; omit for none. */
|
|
50
|
-
includeDirs?: string[];
|
|
51
|
-
/** Default code load address for placement; omit uses pipeline default. */
|
|
52
|
-
defaultCodeBase?: number;
|
|
53
|
-
/** Optional full source text per file for listings. */
|
|
54
|
-
sourceTexts?: Map<string, string>;
|
|
55
|
-
/** Optional line-end comments keyed by file and 1-based line. */
|
|
56
|
-
sourceLineComments?: Map<string, Map<number, string>>;
|
|
57
|
-
};
|
|
58
|
-
/** In-memory compile products passed to format writers (plus trace stream). */
|
|
59
|
-
export type EmitProgramResult = {
|
|
60
|
-
/** Final merged address→byte map for writers. */
|
|
61
|
-
map: EmittedByteMap;
|
|
62
|
-
/** Resolved symbol table. */
|
|
63
|
-
symbols: SymbolEntry[];
|
|
64
|
-
/** Raw lowered asm trace from phase 1. */
|
|
65
|
-
loweredAsmStream: LoweredAsmStream;
|
|
66
|
-
/** Lowered asm after placement. */
|
|
67
|
-
placedLoweredAsmProgram: LoweredAsmProgram;
|
|
68
|
-
};
|
|
69
|
-
/** Finalization inputs that come from phase-1 wiring rather than phase-3 lowering. */
|
|
70
|
-
export interface EmitFinalizationEnv {
|
|
71
|
-
/** Shared diagnostics buffer. */
|
|
72
|
-
readonly diagnostics: EmitFinalizationContext['diagnostics'];
|
|
73
|
-
/** File-level diagnostic helper. */
|
|
74
|
-
readonly diag: EmitFinalizationContext['diag'];
|
|
75
|
-
/** Span-level diagnostic helper. */
|
|
76
|
-
readonly diagAt: EmitFinalizationContext['diagAt'];
|
|
77
|
-
/** Primary source path for diagnostics. */
|
|
78
|
-
readonly primaryFile: EmitFinalizationContext['primaryFile'];
|
|
79
|
-
/** Code/data placement base imm expressions. */
|
|
80
|
-
readonly baseExprs: EmitFinalizationContext['baseExprs'];
|
|
81
|
-
/** Imm evaluator used during placement. */
|
|
82
|
-
readonly evalImmExpr: EmitFinalizationContext['evalImmExpr'];
|
|
83
|
-
/** Compile environment. */
|
|
84
|
-
readonly env: EmitFinalizationContext['env'];
|
|
85
|
-
/** Lowered asm stream to place. */
|
|
86
|
-
readonly loweredAsmStream: EmitFinalizationContext['loweredAsmStream'];
|
|
87
|
-
/** Pending abs16 fixups. */
|
|
88
|
-
readonly fixups: EmitFinalizationContext['fixups'];
|
|
89
|
-
/** Pending rel8 fixups. */
|
|
90
|
-
readonly rel8Fixups: EmitFinalizationContext['rel8Fixups'];
|
|
91
|
-
/** Working byte map before merge. */
|
|
92
|
-
readonly bytes: EmitFinalizationContext['bytes'];
|
|
93
|
-
/** Code source segments for rebasing. */
|
|
94
|
-
readonly codeSourceSegments: EmitFinalizationContext['codeSourceSegments'];
|
|
95
|
-
/** Byte alignment helper. */
|
|
96
|
-
readonly alignTo: EmitFinalizationContext['alignTo'];
|
|
97
|
-
/** Writes a byte-offset slice into the byte map. */
|
|
98
|
-
readonly writeBytePlacement: EmitFinalizationContext['writeBytePlacement'];
|
|
99
|
-
/** Computes written byte ranges for overlap checks. */
|
|
100
|
-
readonly computeWrittenRange: EmitFinalizationContext['computeWrittenRange'];
|
|
101
|
-
/** Rebases source map after placement moves. */
|
|
102
|
-
readonly rebaseCodeSourceSegments: EmitFinalizationContext['rebaseCodeSourceSegments'];
|
|
103
|
-
/** Optional default code base override. */
|
|
104
|
-
readonly defaultCodeBase?: number;
|
|
105
|
-
}
|
|
106
|
-
type EmitPlacementPhaseContext = EmitLoweringPhaseResult & EmitFinalizationEnv;
|
|
107
|
-
type EmitPlacementPhaseResult = Omit<EmitProgramResult, 'loweredAsmStream'>;
|
|
108
|
-
/**
|
|
109
|
-
* Combine lowering output with placement/fixup inputs. `lowered` is the typed handoff from
|
|
110
|
-
* the lowering phase; `env` holds shared refs (maps, diagnostics, helpers) held across phases.
|
|
111
|
-
*/
|
|
112
|
-
export declare function mergeEmitFinalizationContext(lowered: EmitLoweringPhaseResult, env: EmitFinalizationEnv): EmitPlacementPhaseContext;
|
|
113
|
-
/** Deterministic empty result when compilation aborts before lowering (e.g. no source files). */
|
|
114
|
-
export declare function emitProgramEmptyResult(): EmitProgramResult;
|
|
115
|
-
/** Phase 2 — prescan: build op candidate maps and alias metadata before emission. */
|
|
116
|
-
export declare function runEmitPrescanPhase(ctx: EmitPrescanPhaseContext): EmitPrescanPhaseResult;
|
|
117
|
-
/** Phase 3 — lowering: emit declarations and instruction streams into placement bytes and fixup queues. */
|
|
118
|
-
export declare function runEmitLoweringPhase(ctx: EmitLoweringPhaseContext, prescan: EmitPrescanPhaseResult): EmitLoweringPhaseResult;
|
|
119
|
-
/** Phase 4 — placement, fixups, merged map and placed lowered ASM. */
|
|
120
|
-
export declare function runEmitPlacementAndArtifactPhase(context: EmitPlacementPhaseContext): EmitPlacementPhaseResult;
|
|
121
|
-
export {};
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Emit orchestration phases for `emitProgram`.
|
|
3
|
-
*
|
|
4
|
-
* Pipeline (conceptual):
|
|
5
|
-
*
|
|
6
|
-
* 1. **Workspace setup** — lives in `emit.ts`: placement byte maps, fixup queues, op registries,
|
|
7
|
-
* resolution helpers, and the program-lowering context (`createEmitProgramContext`). This
|
|
8
|
-
* phase wires mutable state and callbacks; it does not traverse the whole program yet.
|
|
9
|
-
*
|
|
10
|
-
* 2. **Prescan** — `runEmitPrescanPhase`: discover ops and
|
|
11
|
-
* raw-address names so later lowering can resolve symbols. Product: {@link PrescanResult}.
|
|
12
|
-
*
|
|
13
|
-
* 3. **Lowering** — `runEmitLoweringPhase`: traverse declarations and instruction streams, emit bytes
|
|
14
|
-
* into placement maps, enqueue fixups. Product: {@link LoweringResult}.
|
|
15
|
-
*
|
|
16
|
-
* 4. **Placement & artifacts** — `runEmitPlacementAndArtifactPhase`: fixup resolution,
|
|
17
|
-
* merged `EmittedByteMap`, symbol table, placed lowered-ASM program.
|
|
18
|
-
* Input: {@link EmitFinalizationContext} (built via {@link mergeEmitFinalizationContext}).
|
|
19
|
-
*
|
|
20
|
-
* Format writers stay in `compile.ts` / `PipelineDeps`; this module only produces the
|
|
21
|
-
* in-memory products they consume.
|
|
22
|
-
*/
|
|
23
|
-
import { finalizeEmitProgram } from './emitFinalization.js';
|
|
24
|
-
import { preScanProgramDeclarations } from './programPrescan.js';
|
|
25
|
-
import { lowerProgramDeclarations } from './programLoweringTraversal.js';
|
|
26
|
-
// --- Phase handoff: merge lowering output with finalization inputs ---
|
|
27
|
-
/**
|
|
28
|
-
* Combine lowering output with placement/fixup inputs. `lowered` is the typed handoff from
|
|
29
|
-
* the lowering phase; `env` holds shared refs (maps, diagnostics, helpers) held across phases.
|
|
30
|
-
*/
|
|
31
|
-
export function mergeEmitFinalizationContext(lowered, env) {
|
|
32
|
-
return { ...lowered, ...env };
|
|
33
|
-
}
|
|
34
|
-
/** Deterministic empty result when compilation aborts before lowering (e.g. no source files). */
|
|
35
|
-
export function emitProgramEmptyResult() {
|
|
36
|
-
return {
|
|
37
|
-
map: { bytes: new Map() },
|
|
38
|
-
symbols: [],
|
|
39
|
-
loweredAsmStream: { blocks: [] },
|
|
40
|
-
placedLoweredAsmProgram: { blocks: [] },
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
// --- Phase 2: prescan (ops) ---
|
|
44
|
-
/** Phase 2 — prescan: build op candidate maps and alias metadata before emission. */
|
|
45
|
-
export function runEmitPrescanPhase(ctx) {
|
|
46
|
-
return preScanProgramDeclarations(ctx);
|
|
47
|
-
}
|
|
48
|
-
// --- Phase 3: lowering (emit bytes, fixups, lowered ASM stream) ---
|
|
49
|
-
/** Phase 3 — lowering: emit declarations and instruction streams into placement bytes and fixup queues. */
|
|
50
|
-
export function runEmitLoweringPhase(ctx, prescan) {
|
|
51
|
-
return lowerProgramDeclarations({ ...ctx, prescan });
|
|
52
|
-
}
|
|
53
|
-
// --- Phase 4: finalization (placement, fixups, artifact assembly) ---
|
|
54
|
-
/** Phase 4 — placement, fixups, merged map and placed lowered ASM. */
|
|
55
|
-
export function runEmitPlacementAndArtifactPhase(context) {
|
|
56
|
-
return finalizeEmitProgram(context);
|
|
57
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Emit program context wiring (#1084, #1316)
|
|
3
|
-
*
|
|
4
|
-
* Callers pass named bundles aligned with {@link AssemblerLoweringComponentContexts}; the builder
|
|
5
|
-
* forwards them without flattening to {@link createEmitLoweringContexts}.
|
|
6
|
-
*/
|
|
7
|
-
import type { AssemblerLoweringAstUtilityContext, AssemblerLoweringConditionContext, AssemblerLoweringDiagnosticsContext, AssemblerLoweringEmissionContext, AssemblerLoweringAddressingContext, AssemblerLoweringOpOverloadContext, AssemblerLoweringOpResolutionContext, AssemblerLoweringRegisterContext, AssemblerLoweringSpTrackingContext, AssemblerLoweringSymbolContext, AssemblerLoweringTypeContext } from './assemblerLoweringContext.js';
|
|
8
|
-
import type { EmitProgramLoweringContextInputs } from './emitContextBuilder.js';
|
|
9
|
-
type EmitDiagnosticsBundle = AssemblerLoweringDiagnosticsContext;
|
|
10
|
-
type EmitSymbolsAndTraceBundle = AssemblerLoweringSymbolContext;
|
|
11
|
-
type EmitSpTrackingBundle = AssemblerLoweringSpTrackingContext;
|
|
12
|
-
type EmitEmissionBundle = AssemblerLoweringEmissionContext;
|
|
13
|
-
type EmitConditionsBundle = AssemblerLoweringConditionContext;
|
|
14
|
-
type EmitTypesBundle = AssemblerLoweringTypeContext;
|
|
15
|
-
type EmitAddressingBundle = AssemblerLoweringAddressingContext;
|
|
16
|
-
type EmitOpResolutionBundle = AssemblerLoweringOpResolutionContext;
|
|
17
|
-
type EmitOpOverloadBundle = AssemblerLoweringOpOverloadContext;
|
|
18
|
-
type EmitAstUtilitiesBundle = AssemblerLoweringAstUtilityContext;
|
|
19
|
-
type EmitRegistersBundle = AssemblerLoweringRegisterContext;
|
|
20
|
-
/** Named bundles passed from `emitProgram` into lowering context construction. */
|
|
21
|
-
type EmitProgramContextBundles = {
|
|
22
|
-
readonly diagnostics: Readonly<EmitDiagnosticsBundle>;
|
|
23
|
-
readonly symbolsAndTrace: Readonly<EmitSymbolsAndTraceBundle>;
|
|
24
|
-
readonly spTracking: Readonly<EmitSpTrackingBundle>;
|
|
25
|
-
readonly emission: Readonly<EmitEmissionBundle>;
|
|
26
|
-
readonly conditions: Readonly<EmitConditionsBundle>;
|
|
27
|
-
readonly types: Readonly<EmitTypesBundle>;
|
|
28
|
-
readonly addressing: Readonly<EmitAddressingBundle>;
|
|
29
|
-
readonly opResolution: Readonly<EmitOpResolutionBundle>;
|
|
30
|
-
readonly opOverload: Readonly<EmitOpOverloadBundle>;
|
|
31
|
-
readonly astUtilities: Readonly<EmitAstUtilitiesBundle>;
|
|
32
|
-
readonly registers: Readonly<EmitRegistersBundle>;
|
|
33
|
-
readonly program: Readonly<EmitProgramLoweringContextInputs>;
|
|
34
|
-
};
|
|
35
|
-
export declare function createEmitProgramContext(bundles: Readonly<EmitProgramContextBundles>): {
|
|
36
|
-
assemblerLoweringSharedContext: import("./assemblerLoweringContext.js").AssemblerLoweringSharedContext;
|
|
37
|
-
programLoweringContext: import("./programLowering.js").Context;
|
|
38
|
-
};
|
|
39
|
-
export {};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Emit program context wiring (#1084, #1316)
|
|
3
|
-
*
|
|
4
|
-
* Callers pass named bundles aligned with {@link AssemblerLoweringComponentContexts}; the builder
|
|
5
|
-
* forwards them without flattening to {@link createEmitLoweringContexts}.
|
|
6
|
-
*/
|
|
7
|
-
import { createEmitLoweringContexts } from './emitContextBuilder.js';
|
|
8
|
-
function emitProgramBundlesToLoweringBuilderInput(b) {
|
|
9
|
-
const assemblerLowering = {
|
|
10
|
-
diagnostics: b.diagnostics,
|
|
11
|
-
symbols: b.symbolsAndTrace,
|
|
12
|
-
spTracking: b.spTracking,
|
|
13
|
-
emission: b.emission,
|
|
14
|
-
conditions: b.conditions,
|
|
15
|
-
types: b.types,
|
|
16
|
-
addressing: b.addressing,
|
|
17
|
-
opResolution: b.opResolution,
|
|
18
|
-
opOverload: b.opOverload,
|
|
19
|
-
astUtilities: b.astUtilities,
|
|
20
|
-
registers: b.registers,
|
|
21
|
-
};
|
|
22
|
-
return {
|
|
23
|
-
assemblerLowering,
|
|
24
|
-
programLowering: b.program,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
export function createEmitProgramContext(bundles) {
|
|
28
|
-
return createEmitLoweringContexts(emitProgramBundlesToLoweringBuilderInput(bundles));
|
|
29
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import type { EmittedSourceSegment } from '../formats/types.js';
|
|
2
|
-
import type { SourceSpan, ImmExprNode } from '../frontend/ast.js';
|
|
3
|
-
import type { PlacementKind, SourceSegmentTag } from './loweringTypes.js';
|
|
4
|
-
import type { LoweredAsmStream, LoweredAsmStreamBlock } from './loweredAsmTypes.js';
|
|
5
|
-
type EmitStateContext = {
|
|
6
|
-
/** Full source text per file for listings. */
|
|
7
|
-
sourceTexts?: Map<string, string>;
|
|
8
|
-
/** Line-end comments keyed by file and line. */
|
|
9
|
-
sourceLineComments?: Map<string, Map<number, string>>;
|
|
10
|
-
/** Code-placement byte map. */
|
|
11
|
-
codeBytes: Map<number, number>;
|
|
12
|
-
/** Source segment ranges for code bytes. */
|
|
13
|
-
codeSourceSegments: EmittedSourceSegment[];
|
|
14
|
-
/** Pending abs16 fixups. */
|
|
15
|
-
fixups: Array<{
|
|
16
|
-
offset: number;
|
|
17
|
-
baseLower: string;
|
|
18
|
-
addend: number;
|
|
19
|
-
file: string;
|
|
20
|
-
}>;
|
|
21
|
-
/** Pending rel8 fixups. */
|
|
22
|
-
rel8Fixups: Array<{
|
|
23
|
-
offset: number;
|
|
24
|
-
origin: number;
|
|
25
|
-
baseLower: string;
|
|
26
|
-
addend: number;
|
|
27
|
-
file: string;
|
|
28
|
-
mnemonic: string;
|
|
29
|
-
}>;
|
|
30
|
-
/** Lowered asm trace stream. */
|
|
31
|
-
loweredAsmStream: LoweredAsmStream;
|
|
32
|
-
/** Lowered asm blocks keyed for random access. */
|
|
33
|
-
loweredAsmBlocksByKey: Map<string, LoweredAsmStreamBlock>;
|
|
34
|
-
/** Alignment helper. */
|
|
35
|
-
alignTo: (n: number, alignment: number) => number;
|
|
36
|
-
/** Best-effort imm evaluation. */
|
|
37
|
-
evalImmNoDiag: (expr: ImmExprNode) => number | undefined;
|
|
38
|
-
/** Parses simple symbolic targets; `undefined` if not symbolic. */
|
|
39
|
-
symbolicTargetFromExpr: (expr: ImmExprNode) => {
|
|
40
|
-
baseLower: string;
|
|
41
|
-
addend: number;
|
|
42
|
-
} | undefined;
|
|
43
|
-
/** Formats an imm for lowered asm text. */
|
|
44
|
-
formatImmExprForAsm: (expr: ImmExprNode) => string;
|
|
45
|
-
/** Pretty-prints a type for traces. */
|
|
46
|
-
typeDisplay: (typeExpr: import('../frontend/ast.js').TypeExprNode) => string;
|
|
47
|
-
};
|
|
48
|
-
export declare function createEmitStateHelpers(ctx: EmitStateContext): {
|
|
49
|
-
activePlacementRef: {
|
|
50
|
-
current: PlacementKind;
|
|
51
|
-
};
|
|
52
|
-
codeOffsetRef: {
|
|
53
|
-
current: number;
|
|
54
|
-
};
|
|
55
|
-
dataOffsetRef: {
|
|
56
|
-
current: number;
|
|
57
|
-
};
|
|
58
|
-
currentCodeSegmentTagRef: {
|
|
59
|
-
current: SourceSegmentTag | undefined;
|
|
60
|
-
};
|
|
61
|
-
generatedLabelCounterRef: {
|
|
62
|
-
current: number;
|
|
63
|
-
};
|
|
64
|
-
getCurrentCodeOffset: () => number;
|
|
65
|
-
setCurrentCodeOffset: (value: number) => void;
|
|
66
|
-
setCurrentCodeByte: (offset: number, value: number) => void;
|
|
67
|
-
pushCurrentFixup: (fixup: {
|
|
68
|
-
offset: number;
|
|
69
|
-
baseLower: string;
|
|
70
|
-
addend: number;
|
|
71
|
-
file: string;
|
|
72
|
-
}) => void;
|
|
73
|
-
pushCurrentRel8Fixup: (fixup: {
|
|
74
|
-
offset: number;
|
|
75
|
-
origin: number;
|
|
76
|
-
baseLower: string;
|
|
77
|
-
addend: number;
|
|
78
|
-
file: string;
|
|
79
|
-
mnemonic: string;
|
|
80
|
-
}) => void;
|
|
81
|
-
recordCodeSourceRange: (start: number, end: number) => void;
|
|
82
|
-
traceLabel: (_offset: number, name: string, span?: SourceSpan) => void;
|
|
83
|
-
traceComment: (_offset: number, text: string) => void;
|
|
84
|
-
advanceAlign: (a: number) => void;
|
|
85
|
-
flushTrailingUserComments: () => void;
|
|
86
|
-
lowerImmExprForLoweredAsm: (expr: ImmExprNode) => import("./loweredAsmTypes.js").LoweredImmExpr;
|
|
87
|
-
lowerOperandForLoweredAsm: (operand: import("../frontend/ast.js").AsmOperandNode) => import("./loweredAsmTypes.js").LoweredOperand;
|
|
88
|
-
recordLoweredAsmItem: (item: import("./loweredAsmTypes.js").LoweredAsmItem, span?: SourceSpan) => void;
|
|
89
|
-
};
|
|
90
|
-
export {};
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { createLoweredAsmStreamRecordingHelpers } from './loweredAsmStreamRecording.js';
|
|
2
|
-
export function createEmitStateHelpers(ctx) {
|
|
3
|
-
let activePlacement = 'code';
|
|
4
|
-
let codeOffset = 0;
|
|
5
|
-
let dataOffset = 0;
|
|
6
|
-
let currentCodeSegmentTag;
|
|
7
|
-
let generatedLabelCounter = 0;
|
|
8
|
-
const sameSourceTag = (x, y) => x.file === y.file &&
|
|
9
|
-
x.line === y.line &&
|
|
10
|
-
x.column === y.column &&
|
|
11
|
-
x.kind === y.kind &&
|
|
12
|
-
x.confidence === y.confidence;
|
|
13
|
-
const recordCodeSourceRange = (start, end) => {
|
|
14
|
-
if (!currentCodeSegmentTag || end <= start)
|
|
15
|
-
return;
|
|
16
|
-
const segments = ctx.codeSourceSegments;
|
|
17
|
-
const last = segments[segments.length - 1];
|
|
18
|
-
if (last && last.end === start && sameSourceTag(last, currentCodeSegmentTag)) {
|
|
19
|
-
last.end = end;
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
segments.push({ ...currentCodeSegmentTag, start, end });
|
|
23
|
-
};
|
|
24
|
-
const activePlacementRef = {
|
|
25
|
-
get current() {
|
|
26
|
-
return activePlacement;
|
|
27
|
-
},
|
|
28
|
-
set current(value) {
|
|
29
|
-
activePlacement = value;
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
const codeOffsetRef = {
|
|
33
|
-
get current() {
|
|
34
|
-
return codeOffset;
|
|
35
|
-
},
|
|
36
|
-
set current(value) {
|
|
37
|
-
codeOffset = value;
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
const dataOffsetRef = {
|
|
41
|
-
get current() {
|
|
42
|
-
return dataOffset;
|
|
43
|
-
},
|
|
44
|
-
set current(value) {
|
|
45
|
-
dataOffset = value;
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
const currentCodeSegmentTagRef = {
|
|
49
|
-
get current() {
|
|
50
|
-
return currentCodeSegmentTag;
|
|
51
|
-
},
|
|
52
|
-
set current(value) {
|
|
53
|
-
currentCodeSegmentTag = value;
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
const generatedLabelCounterRef = {
|
|
57
|
-
get current() {
|
|
58
|
-
return generatedLabelCounter;
|
|
59
|
-
},
|
|
60
|
-
set current(value) {
|
|
61
|
-
generatedLabelCounter = value;
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
const getCurrentCodeOffset = () => codeOffset;
|
|
65
|
-
const setCurrentCodeOffset = (value) => {
|
|
66
|
-
codeOffset = value;
|
|
67
|
-
};
|
|
68
|
-
const setCurrentCodeByte = (offset, value) => {
|
|
69
|
-
ctx.codeBytes.set(offset, value);
|
|
70
|
-
};
|
|
71
|
-
const pushCurrentFixup = (fixup) => {
|
|
72
|
-
ctx.fixups.push(fixup);
|
|
73
|
-
};
|
|
74
|
-
const pushCurrentRel8Fixup = (fixup) => {
|
|
75
|
-
ctx.rel8Fixups.push(fixup);
|
|
76
|
-
};
|
|
77
|
-
const advanceAlign = (a) => {
|
|
78
|
-
switch (activePlacement) {
|
|
79
|
-
case 'code':
|
|
80
|
-
codeOffset = ctx.alignTo(codeOffset, a);
|
|
81
|
-
return;
|
|
82
|
-
case 'data':
|
|
83
|
-
dataOffset = ctx.alignTo(dataOffset, a);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
const { flushTrailingUserComments, lowerImmExprForLoweredAsm, lowerOperandForLoweredAsm, recordLoweredAsmItem, } = createLoweredAsmStreamRecordingHelpers({
|
|
88
|
-
activePlacementRef,
|
|
89
|
-
loweredAsmBlocksByKey: ctx.loweredAsmBlocksByKey,
|
|
90
|
-
loweredAsmStream: ctx.loweredAsmStream,
|
|
91
|
-
...(ctx.sourceLineComments ? { sourceLineComments: ctx.sourceLineComments } : {}),
|
|
92
|
-
...(ctx.sourceTexts ? { sourceTexts: ctx.sourceTexts } : {}),
|
|
93
|
-
evalImmNoDiag: ctx.evalImmNoDiag,
|
|
94
|
-
symbolicTargetFromExpr: ctx.symbolicTargetFromExpr,
|
|
95
|
-
formatImmExprForAsm: ctx.formatImmExprForAsm,
|
|
96
|
-
typeDisplay: ctx.typeDisplay,
|
|
97
|
-
});
|
|
98
|
-
const traceLabel = (_offset, name, span) => {
|
|
99
|
-
recordLoweredAsmItem({ kind: 'label', name }, span);
|
|
100
|
-
};
|
|
101
|
-
const traceComment = (_offset, text) => {
|
|
102
|
-
recordLoweredAsmItem({ kind: 'comment', text, origin: 'generated' });
|
|
103
|
-
};
|
|
104
|
-
return {
|
|
105
|
-
activePlacementRef,
|
|
106
|
-
codeOffsetRef,
|
|
107
|
-
dataOffsetRef,
|
|
108
|
-
currentCodeSegmentTagRef,
|
|
109
|
-
generatedLabelCounterRef,
|
|
110
|
-
getCurrentCodeOffset,
|
|
111
|
-
setCurrentCodeOffset,
|
|
112
|
-
setCurrentCodeByte,
|
|
113
|
-
pushCurrentFixup,
|
|
114
|
-
pushCurrentRel8Fixup,
|
|
115
|
-
recordCodeSourceRange,
|
|
116
|
-
traceLabel,
|
|
117
|
-
traceComment,
|
|
118
|
-
advanceAlign,
|
|
119
|
-
flushTrailingUserComments,
|
|
120
|
-
lowerImmExprForLoweredAsm,
|
|
121
|
-
lowerOperandForLoweredAsm,
|
|
122
|
-
recordLoweredAsmItem,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { CompileEnv } from '../semantics/env.js';
|
|
2
|
-
type FixupBaseResolver = (nameLower: string, visiting?: Set<string>) => number | undefined;
|
|
3
|
-
export declare function createFixupBaseResolver(args: {
|
|
4
|
-
env: CompileEnv;
|
|
5
|
-
addrByNameLower: Map<string, number>;
|
|
6
|
-
}): FixupBaseResolver;
|
|
7
|
-
export {};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { parseNumberLiteral } from '../frontend/parseImm.js';
|
|
2
|
-
import { resolveAsmEquSymbol } from './asmEquResolution.js';
|
|
3
|
-
export function createFixupBaseResolver(args) {
|
|
4
|
-
const { env, addrByNameLower } = args;
|
|
5
|
-
return (nameLower, visiting = new Set()) => {
|
|
6
|
-
const sym = addrByNameLower.get(nameLower);
|
|
7
|
-
if (sym !== undefined)
|
|
8
|
-
return sym;
|
|
9
|
-
const literal = parseNumberLiteral(nameLower);
|
|
10
|
-
if (literal !== undefined)
|
|
11
|
-
return literal;
|
|
12
|
-
if (/^-?[0-9]+$/.test(nameLower))
|
|
13
|
-
return Number.parseInt(nameLower, 10);
|
|
14
|
-
return resolveAsmEquSymbol(nameLower, {
|
|
15
|
-
env,
|
|
16
|
-
lookupSymbol: (name) => addrByNameLower.get(name),
|
|
17
|
-
cacheResolved: (name, value) => {
|
|
18
|
-
addrByNameLower.set(name, value);
|
|
19
|
-
env.equates.set(name, value);
|
|
20
|
-
},
|
|
21
|
-
}, visiting);
|
|
22
|
-
};
|
|
23
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import type { AsmOperandNode, ImmExprNode, SourceSpan } from '../frontend/ast.js';
|
|
2
|
-
type FixupRecord = {
|
|
3
|
-
/** Patch offset in code. */
|
|
4
|
-
offset: number;
|
|
5
|
-
/** Target symbol (lowercased). */
|
|
6
|
-
baseLower: string;
|
|
7
|
-
/** Byte addend. */
|
|
8
|
-
addend: number;
|
|
9
|
-
/** Owning file. */
|
|
10
|
-
file: string;
|
|
11
|
-
};
|
|
12
|
-
type Rel8FixupRecord = {
|
|
13
|
-
/** Patch offset. */
|
|
14
|
-
offset: number;
|
|
15
|
-
/** Branch origin. */
|
|
16
|
-
origin: number;
|
|
17
|
-
/** Target symbol. */
|
|
18
|
-
baseLower: string;
|
|
19
|
-
/** Addend. */
|
|
20
|
-
addend: number;
|
|
21
|
-
/** Owning file. */
|
|
22
|
-
file: string;
|
|
23
|
-
/** Mnemonic for diagnostics. */
|
|
24
|
-
mnemonic: string;
|
|
25
|
-
};
|
|
26
|
-
type EvalImmExpr = (expr: ImmExprNode) => number | undefined;
|
|
27
|
-
type TraceInstruction = (start: number, bytes: Uint8Array, asmText: string) => void;
|
|
28
|
-
type FixupEmissionContext = {
|
|
29
|
-
/** Current code offset. */
|
|
30
|
-
getCodeOffset: () => number;
|
|
31
|
-
/** Sets code offset. */
|
|
32
|
-
setCodeOffset: (value: number) => void;
|
|
33
|
-
/** Writes a code byte. */
|
|
34
|
-
setCodeByte: (offset: number, value: number) => void;
|
|
35
|
-
/** Records source range for listing. */
|
|
36
|
-
recordCodeSourceRange: (start: number, end: number) => void;
|
|
37
|
-
/** Enqueues abs16 fixup. */
|
|
38
|
-
pushFixup: (fixup: FixupRecord) => void;
|
|
39
|
-
/** Enqueues rel8 fixup. */
|
|
40
|
-
pushRel8Fixup: (fixup: Rel8FixupRecord) => void;
|
|
41
|
-
/** Trace hook for raw emission. */
|
|
42
|
-
traceInstruction: TraceInstruction;
|
|
43
|
-
/** Optional lowered-instr recorder for asm trace. */
|
|
44
|
-
recordLoweredInstr?: (bytes: Uint8Array, asmText: string, span: SourceSpan) => void;
|
|
45
|
-
/** Const imm evaluation. */
|
|
46
|
-
evalImmExpr: EvalImmExpr;
|
|
47
|
-
};
|
|
48
|
-
export declare function createFixupEmissionHelpers(ctx: FixupEmissionContext): {
|
|
49
|
-
callConditionOpcodeFromName: (nameRaw: string) => number | undefined;
|
|
50
|
-
conditionNameFromOpcode: (opcode: number) => string | undefined;
|
|
51
|
-
conditionOpcode: (op: AsmOperandNode) => number | undefined;
|
|
52
|
-
conditionOpcodeFromName: (nameRaw: string) => number | undefined;
|
|
53
|
-
emitAbs16Fixup: (opcode: number, baseLower: string, addend: number, span: SourceSpan, asmText?: string) => void;
|
|
54
|
-
emitAbs16FixupEd: (opcode2: number, baseLower: string, addend: number, span: SourceSpan, asmText?: string) => void;
|
|
55
|
-
emitAbs16FixupPrefixed: (prefix: number, opcode2: number, baseLower: string, addend: number, span: SourceSpan, asmText?: string) => void;
|
|
56
|
-
emitRel8Fixup: (opcode: number, baseLower: string, addend: number, span: SourceSpan, mnemonic: string, asmText?: string) => void;
|
|
57
|
-
inverseConditionName: (nameRaw: string) => string | undefined;
|
|
58
|
-
jrConditionOpcodeFromName: (nameRaw: string) => number | undefined;
|
|
59
|
-
symbolicTargetFromExpr: (expr: ImmExprNode) => {
|
|
60
|
-
baseLower: string;
|
|
61
|
-
addend: number;
|
|
62
|
-
} | undefined;
|
|
63
|
-
};
|
|
64
|
-
export {};
|