@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,186 +0,0 @@
|
|
|
1
|
-
import { dirname, extname } from 'node:path';
|
|
2
|
-
import { readFile } from 'node:fs/promises';
|
|
3
|
-
import { analyzeLoadedProgram } from './analysis.js';
|
|
4
|
-
import { hasErrors, normalizePath } from './compileShared.js';
|
|
5
|
-
import { DiagnosticIds } from './diagnosticTypes.js';
|
|
6
|
-
import { buildDirectiveAliasPolicy, defaultDirectiveAliasProfileName, readDirectiveAliasProfile, } from './frontend/directiveAliases.js';
|
|
7
|
-
import { isSupportedSourcePath } from './frontend/sourceExtensions.js';
|
|
8
|
-
import { emitProgram } from './lowering/emit.js';
|
|
9
|
-
import { loadProgram } from './sourceLoader.js';
|
|
10
|
-
import { analyzeRegisterCare } from './registerCare/analyze.js';
|
|
11
|
-
import { parseInterfaceContracts } from './registerCare/smartComments.js';
|
|
12
|
-
import { readPackageVersion } from './packageInfo.js';
|
|
13
|
-
function withDefaults(options) {
|
|
14
|
-
const anyPrimaryEmitSpecified = [options.emitBin, options.emitHex, options.emitD8m].some((v) => v !== undefined);
|
|
15
|
-
const emitBin = anyPrimaryEmitSpecified ? (options.emitBin ?? false) : true;
|
|
16
|
-
const emitHex = anyPrimaryEmitSpecified ? (options.emitHex ?? false) : true;
|
|
17
|
-
const emitD8m = anyPrimaryEmitSpecified ? (options.emitD8m ?? false) : true;
|
|
18
|
-
// Listing is a sidecar artifact: default to on unless explicitly suppressed.
|
|
19
|
-
const emitListing = options.emitListing ?? true;
|
|
20
|
-
const emitAsm80 = options.emitAsm80 ?? false;
|
|
21
|
-
return { emitBin, emitHex, emitD8m, emitListing, emitAsm80 };
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Compile an AZM/ASM80-family program starting from an entry file.
|
|
25
|
-
*
|
|
26
|
-
* - Expands textual includes transitively with deterministic cycle checks.
|
|
27
|
-
* - Runs parse → semantics → lowering → format writers.
|
|
28
|
-
* - Produces artifacts in-memory via `deps.formats`.
|
|
29
|
-
* - Defaults to emitting BIN + HEX + D8M unless an emit flag is explicitly provided.
|
|
30
|
-
*/
|
|
31
|
-
export const compile = async (entryFile, options, deps) => {
|
|
32
|
-
const entryPath = normalizePath(entryFile);
|
|
33
|
-
const diagnostics = [];
|
|
34
|
-
const artifacts = [];
|
|
35
|
-
if (!isSupportedSourcePath(entryPath)) {
|
|
36
|
-
diagnostics.push({
|
|
37
|
-
id: DiagnosticIds.Unknown,
|
|
38
|
-
severity: 'error',
|
|
39
|
-
message: 'Unsupported source file extension (expected .asm or .z80)',
|
|
40
|
-
file: entryPath,
|
|
41
|
-
});
|
|
42
|
-
return { diagnostics, artifacts };
|
|
43
|
-
}
|
|
44
|
-
const projectAliasProfiles = [];
|
|
45
|
-
for (const path of options.directiveAliasFiles ?? []) {
|
|
46
|
-
projectAliasProfiles.push(await readDirectiveAliasProfile(normalizePath(path)));
|
|
47
|
-
}
|
|
48
|
-
const directiveAliasPolicy = buildDirectiveAliasPolicy(defaultDirectiveAliasProfileName(), projectAliasProfiles);
|
|
49
|
-
const loaded = await loadProgram(entryPath, diagnostics, {
|
|
50
|
-
...options,
|
|
51
|
-
directiveAliasPolicy,
|
|
52
|
-
});
|
|
53
|
-
if (!loaded)
|
|
54
|
-
return { diagnostics, artifacts };
|
|
55
|
-
const { program, sourceTexts, sourceLineComments } = loaded;
|
|
56
|
-
if (hasErrors(diagnostics)) {
|
|
57
|
-
return { diagnostics, artifacts };
|
|
58
|
-
}
|
|
59
|
-
const analysis = analyzeLoadedProgram(loaded, {
|
|
60
|
-
...(options.caseStyle !== undefined ? { caseStyle: options.caseStyle } : {}),
|
|
61
|
-
...(options.requireMain !== undefined ? { requireMain: options.requireMain } : {}),
|
|
62
|
-
});
|
|
63
|
-
diagnostics.push(...analysis.diagnostics);
|
|
64
|
-
if (hasErrors(diagnostics) || !analysis.env)
|
|
65
|
-
return { diagnostics, artifacts };
|
|
66
|
-
const env = analysis.env;
|
|
67
|
-
const registerCareMode = options.registerCare ?? 'off';
|
|
68
|
-
const shouldAnalyzeRegisterCare = registerCareMode !== 'off' ||
|
|
69
|
-
options.emitRegisterReport === true ||
|
|
70
|
-
options.emitRegisterInterface === true ||
|
|
71
|
-
options.emitRegisterAnnotations === true ||
|
|
72
|
-
options.fixRegisterContracts === true ||
|
|
73
|
-
(options.acceptRegisterOutputCandidates?.length ?? 0) > 0 ||
|
|
74
|
-
(options.registerCareInterfaces?.length ?? 0) > 0;
|
|
75
|
-
if (shouldAnalyzeRegisterCare) {
|
|
76
|
-
const interfaceContracts = [];
|
|
77
|
-
for (const path of options.registerCareInterfaces ?? []) {
|
|
78
|
-
const resolved = normalizePath(path);
|
|
79
|
-
if (extname(resolved).toLowerCase() !== '.asmi') {
|
|
80
|
-
diagnostics.push({
|
|
81
|
-
id: DiagnosticIds.Unknown,
|
|
82
|
-
severity: 'error',
|
|
83
|
-
message: 'Register-care interface files must use the .asmi extension',
|
|
84
|
-
file: resolved,
|
|
85
|
-
});
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
const text = await readFile(resolved, 'utf8');
|
|
89
|
-
interfaceContracts.push(...parseInterfaceContracts(text, resolved).values());
|
|
90
|
-
}
|
|
91
|
-
if (hasErrors(diagnostics))
|
|
92
|
-
return { diagnostics, artifacts };
|
|
93
|
-
const registerCare = analyzeRegisterCare(loaded, {
|
|
94
|
-
mode: registerCareMode,
|
|
95
|
-
emitReport: options.emitRegisterReport === true,
|
|
96
|
-
emitInterface: options.emitRegisterInterface === true,
|
|
97
|
-
emitAnnotations: options.emitRegisterAnnotations === true || options.fixRegisterContracts === true,
|
|
98
|
-
fixRegisterContracts: options.fixRegisterContracts === true,
|
|
99
|
-
...(options.acceptRegisterOutputCandidates !== undefined
|
|
100
|
-
? { acceptOutputCandidates: options.acceptRegisterOutputCandidates }
|
|
101
|
-
: {}),
|
|
102
|
-
...(options.registerCareProfile !== undefined
|
|
103
|
-
? { profile: options.registerCareProfile }
|
|
104
|
-
: {}),
|
|
105
|
-
...(interfaceContracts.length > 0 ? { interfaceContracts } : {}),
|
|
106
|
-
});
|
|
107
|
-
diagnostics.push(...registerCare.diagnostics);
|
|
108
|
-
if (registerCare.reportText !== undefined) {
|
|
109
|
-
artifacts.push({ kind: 'register-care-report', text: registerCare.reportText });
|
|
110
|
-
}
|
|
111
|
-
if (registerCare.interfaceText !== undefined) {
|
|
112
|
-
artifacts.push({ kind: 'register-care-interface', text: registerCare.interfaceText });
|
|
113
|
-
}
|
|
114
|
-
if (registerCare.annotatedFiles !== undefined) {
|
|
115
|
-
artifacts.push({ kind: 'register-care-annotations', files: registerCare.annotatedFiles });
|
|
116
|
-
}
|
|
117
|
-
if (hasErrors(diagnostics)) {
|
|
118
|
-
return { diagnostics, artifacts };
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
const { map, symbols, placedLoweredAsmProgram } = emitProgram(program, env, diagnostics, {
|
|
122
|
-
...(options.includeDirs ? { includeDirs: options.includeDirs } : {}),
|
|
123
|
-
...(options.defaultCodeBase !== undefined ? { defaultCodeBase: options.defaultCodeBase } : {}),
|
|
124
|
-
sourceTexts,
|
|
125
|
-
sourceLineComments,
|
|
126
|
-
});
|
|
127
|
-
if (hasErrors(diagnostics)) {
|
|
128
|
-
return { diagnostics, artifacts };
|
|
129
|
-
}
|
|
130
|
-
const emit = withDefaults(options);
|
|
131
|
-
if (emit.emitBin) {
|
|
132
|
-
artifacts.push(deps.formats.writeBin(map, symbols));
|
|
133
|
-
}
|
|
134
|
-
if (emit.emitHex) {
|
|
135
|
-
artifacts.push(deps.formats.writeHex(map, symbols));
|
|
136
|
-
}
|
|
137
|
-
if (emit.emitD8m) {
|
|
138
|
-
const mainEntry = symbols.find((s) => s.kind === 'label' && s.name.toLowerCase() === 'main');
|
|
139
|
-
const d8mRoot = options.sourceRoot ?? dirname(entryPath);
|
|
140
|
-
artifacts.push(deps.formats.writeD8m(map, symbols, {
|
|
141
|
-
rootDir: d8mRoot,
|
|
142
|
-
packageVersion: readPackageVersion(),
|
|
143
|
-
inputs: {
|
|
144
|
-
entry: entryPath,
|
|
145
|
-
...(options.d8mInputs?.listing !== undefined
|
|
146
|
-
? { listing: options.d8mInputs.listing }
|
|
147
|
-
: {}),
|
|
148
|
-
...(options.d8mInputs?.hex !== undefined ? { hex: options.d8mInputs.hex } : {}),
|
|
149
|
-
...(options.d8mInputs?.bin !== undefined ? { bin: options.d8mInputs.bin } : {}),
|
|
150
|
-
},
|
|
151
|
-
...(mainEntry
|
|
152
|
-
? {
|
|
153
|
-
entrySymbol: mainEntry.name,
|
|
154
|
-
entryAddress: mainEntry.address & 0xffff,
|
|
155
|
-
}
|
|
156
|
-
: {}),
|
|
157
|
-
}));
|
|
158
|
-
}
|
|
159
|
-
if (emit.emitListing) {
|
|
160
|
-
if (deps.formats.writeListing) {
|
|
161
|
-
artifacts.push(deps.formats.writeListing(map, symbols));
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
diagnostics.push({
|
|
165
|
-
id: DiagnosticIds.Unknown,
|
|
166
|
-
severity: 'warning',
|
|
167
|
-
message: 'emitListing=true but no listing writer is configured; skipping .lst artifact.',
|
|
168
|
-
file: program.entryFile,
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
if (emit.emitAsm80) {
|
|
173
|
-
if (deps.formats.writeAsm80) {
|
|
174
|
-
artifacts.push(deps.formats.writeAsm80(placedLoweredAsmProgram));
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
diagnostics.push({
|
|
178
|
-
id: DiagnosticIds.Unknown,
|
|
179
|
-
severity: 'warning',
|
|
180
|
-
message: 'emitAsm80=true but no asm80 writer is configured; skipping .asm artifact.',
|
|
181
|
-
file: program.entryFile,
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
return { diagnostics, artifacts };
|
|
186
|
-
};
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Severity level for a diagnostic.
|
|
3
|
-
*/
|
|
4
|
-
export type DiagnosticSeverity = 'error' | 'warning' | 'info';
|
|
5
|
-
/**
|
|
6
|
-
* A compiler diagnostic (error/warning/info) with an optional source location.
|
|
7
|
-
*
|
|
8
|
-
* Diagnostics must have stable IDs so downstream tooling can rely on them.
|
|
9
|
-
*/
|
|
10
|
-
export interface Diagnostic {
|
|
11
|
-
/** Stable diagnostic identifier (e.g., `AZM001`). */
|
|
12
|
-
id: DiagnosticId;
|
|
13
|
-
severity: DiagnosticSeverity;
|
|
14
|
-
message: string;
|
|
15
|
-
file: string;
|
|
16
|
-
/** 1-based line number, when known. */
|
|
17
|
-
line?: number;
|
|
18
|
-
/** 1-based column number, when known. */
|
|
19
|
-
column?: number;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Known diagnostic IDs.
|
|
23
|
-
*
|
|
24
|
-
* PR0 started with a minimal set; later PRs should extend this via contract changes.
|
|
25
|
-
*/
|
|
26
|
-
export declare const DiagnosticIds: {
|
|
27
|
-
/**
|
|
28
|
-
* Unknown/unclassified diagnostic.
|
|
29
|
-
*
|
|
30
|
-
* Use a more specific ID when possible; this remains for forward compatibility.
|
|
31
|
-
*/
|
|
32
|
-
readonly Unknown: "AZM000";
|
|
33
|
-
/** Failed to read a source file from disk. */
|
|
34
|
-
readonly IoReadFailed: "AZM001";
|
|
35
|
-
/** Internal error during parsing (unexpected exception). */
|
|
36
|
-
readonly InternalParseError: "AZM002";
|
|
37
|
-
/** Include could not be resolved on any search path. */
|
|
38
|
-
readonly IncludeNotFound: "AZM003";
|
|
39
|
-
/** Generic parse error (syntax / unsupported in current PR subset). */
|
|
40
|
-
readonly ParseError: "AZM100";
|
|
41
|
-
/** Generic instruction encoding error (unsupported mnemonic/operands, out-of-range imm, etc.). */
|
|
42
|
-
readonly EncodeError: "AZM200";
|
|
43
|
-
/** Generic emission/lowering error (layout/packing/symbol collisions, etc.). */
|
|
44
|
-
readonly EmitError: "AZM300";
|
|
45
|
-
/** Generic emission/lowering warning. */
|
|
46
|
-
readonly EmitWarning: "AZM301";
|
|
47
|
-
/** Op invocation arity mismatch against available overload set. */
|
|
48
|
-
readonly OpArityMismatch: "AZM310";
|
|
49
|
-
/** No overload match for an op invocation with the provided operands. */
|
|
50
|
-
readonly OpNoMatchingOverload: "AZM311";
|
|
51
|
-
/** Ambiguous overload resolution for an op invocation. */
|
|
52
|
-
readonly OpAmbiguousOverload: "AZM312";
|
|
53
|
-
/** Cyclic op expansion detected in inline expansion graph. */
|
|
54
|
-
readonly OpExpansionCycle: "AZM313";
|
|
55
|
-
/** Op expansion produced an invalid concrete instruction after substitution. */
|
|
56
|
-
readonly OpInvalidExpansion: "AZM314";
|
|
57
|
-
/** Generic semantic evaluation error (env building, imm evaluation, etc.). */
|
|
58
|
-
readonly SemanticsError: "AZM400";
|
|
59
|
-
/** Divide by zero in an imm expression. */
|
|
60
|
-
readonly ImmDivideByZero: "AZM401";
|
|
61
|
-
/** Modulo by zero in an imm expression. */
|
|
62
|
-
readonly ImmModuloByZero: "AZM402";
|
|
63
|
-
/** Type/layout error (unknown type, recursion, missing array length, etc.). */
|
|
64
|
-
readonly TypeError: "AZM403";
|
|
65
|
-
/** Case-style lint warning for keyword/register casing policy. */
|
|
66
|
-
readonly CaseStyleLint: "AZM500";
|
|
67
|
-
/** Redundant outer parentheses in a constant-only array index expression. */
|
|
68
|
-
readonly IndexParenRedundant: "AZM501";
|
|
69
|
-
/** Register-care conflict where a call may destroy a live caller value. */
|
|
70
|
-
readonly RegisterCareConflict: "AZM600";
|
|
71
|
-
/** Register-care analysis cannot prove an external or indirect call contract. */
|
|
72
|
-
readonly RegisterCareUnknownBoundary: "AZM601";
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* Union type of all defined diagnostic IDs.
|
|
76
|
-
*/
|
|
77
|
-
export type DiagnosticId = (typeof DiagnosticIds)[keyof typeof DiagnosticIds];
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Known diagnostic IDs.
|
|
3
|
-
*
|
|
4
|
-
* PR0 started with a minimal set; later PRs should extend this via contract changes.
|
|
5
|
-
*/
|
|
6
|
-
export const DiagnosticIds = {
|
|
7
|
-
/**
|
|
8
|
-
* Unknown/unclassified diagnostic.
|
|
9
|
-
*
|
|
10
|
-
* Use a more specific ID when possible; this remains for forward compatibility.
|
|
11
|
-
*/
|
|
12
|
-
Unknown: 'AZM000',
|
|
13
|
-
/** Failed to read a source file from disk. */
|
|
14
|
-
IoReadFailed: 'AZM001',
|
|
15
|
-
/** Internal error during parsing (unexpected exception). */
|
|
16
|
-
InternalParseError: 'AZM002',
|
|
17
|
-
/** Include could not be resolved on any search path. */
|
|
18
|
-
IncludeNotFound: 'AZM003',
|
|
19
|
-
/** Generic parse error (syntax / unsupported in current PR subset). */
|
|
20
|
-
ParseError: 'AZM100',
|
|
21
|
-
/** Generic instruction encoding error (unsupported mnemonic/operands, out-of-range imm, etc.). */
|
|
22
|
-
EncodeError: 'AZM200',
|
|
23
|
-
/** Generic emission/lowering error (layout/packing/symbol collisions, etc.). */
|
|
24
|
-
EmitError: 'AZM300',
|
|
25
|
-
/** Generic emission/lowering warning. */
|
|
26
|
-
EmitWarning: 'AZM301',
|
|
27
|
-
/** Op invocation arity mismatch against available overload set. */
|
|
28
|
-
OpArityMismatch: 'AZM310',
|
|
29
|
-
/** No overload match for an op invocation with the provided operands. */
|
|
30
|
-
OpNoMatchingOverload: 'AZM311',
|
|
31
|
-
/** Ambiguous overload resolution for an op invocation. */
|
|
32
|
-
OpAmbiguousOverload: 'AZM312',
|
|
33
|
-
/** Cyclic op expansion detected in inline expansion graph. */
|
|
34
|
-
OpExpansionCycle: 'AZM313',
|
|
35
|
-
/** Op expansion produced an invalid concrete instruction after substitution. */
|
|
36
|
-
OpInvalidExpansion: 'AZM314',
|
|
37
|
-
/** Generic semantic evaluation error (env building, imm evaluation, etc.). */
|
|
38
|
-
SemanticsError: 'AZM400',
|
|
39
|
-
/** Divide by zero in an imm expression. */
|
|
40
|
-
ImmDivideByZero: 'AZM401',
|
|
41
|
-
/** Modulo by zero in an imm expression. */
|
|
42
|
-
ImmModuloByZero: 'AZM402',
|
|
43
|
-
/** Type/layout error (unknown type, recursion, missing array length, etc.). */
|
|
44
|
-
TypeError: 'AZM403',
|
|
45
|
-
/** Case-style lint warning for keyword/register casing policy. */
|
|
46
|
-
CaseStyleLint: 'AZM500',
|
|
47
|
-
/** Redundant outer parentheses in a constant-only array index expression. */
|
|
48
|
-
IndexParenRedundant: 'AZM501',
|
|
49
|
-
/** Register-care conflict where a call may destroy a live caller value. */
|
|
50
|
-
RegisterCareConflict: 'AZM600',
|
|
51
|
-
/** Register-care analysis cannot prove an external or indirect call contract. */
|
|
52
|
-
RegisterCareUnknownBoundary: 'AZM601',
|
|
53
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { writeBin } from './writeBin.js';
|
|
2
|
-
import { writeD8m } from './writeD8m.js';
|
|
3
|
-
import { writeHex } from './writeHex.js';
|
|
4
|
-
import { writeListing } from './writeListing.js';
|
|
5
|
-
import { writeAsm80 } from './writeAsm80.js';
|
|
6
|
-
/**
|
|
7
|
-
* Default in-memory artifact writers.
|
|
8
|
-
*
|
|
9
|
-
* These writers implement the `FormatWriters` contract and return artifacts without writing to disk.
|
|
10
|
-
*/
|
|
11
|
-
export const defaultFormatWriters = {
|
|
12
|
-
writeHex,
|
|
13
|
-
writeBin,
|
|
14
|
-
writeD8m,
|
|
15
|
-
writeListing,
|
|
16
|
-
writeAsm80,
|
|
17
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { AddressRange, EmittedByteMap } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Compute contiguous written segments from an emitted byte map.
|
|
4
|
-
*
|
|
5
|
-
* - Segments are half-open `[start, end)`.
|
|
6
|
-
* - Segment boundaries are based on concrete written byte addresses.
|
|
7
|
-
* - For an empty map, `[]` is returned.
|
|
8
|
-
*/
|
|
9
|
-
export declare function getWrittenSegments(map: EmittedByteMap): AddressRange[];
|
|
10
|
-
/**
|
|
11
|
-
* Compute the effective written range for an emitted byte map.
|
|
12
|
-
*
|
|
13
|
-
* - If `map.writtenRange` is present, it is returned directly.
|
|
14
|
-
* - Otherwise, the range is derived from the min/max written addresses.
|
|
15
|
-
* - For an empty map, `{ start: 0, end: 0 }` is returned.
|
|
16
|
-
*/
|
|
17
|
-
export declare function getWrittenRange(map: EmittedByteMap): AddressRange;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compute contiguous written segments from an emitted byte map.
|
|
3
|
-
*
|
|
4
|
-
* - Segments are half-open `[start, end)`.
|
|
5
|
-
* - Segment boundaries are based on concrete written byte addresses.
|
|
6
|
-
* - For an empty map, `[]` is returned.
|
|
7
|
-
*/
|
|
8
|
-
export function getWrittenSegments(map) {
|
|
9
|
-
if (map.bytes.size === 0)
|
|
10
|
-
return [];
|
|
11
|
-
const sorted = [...new Set(map.bytes.keys())].sort((a, b) => a - b);
|
|
12
|
-
const segments = [];
|
|
13
|
-
let start = sorted[0];
|
|
14
|
-
let prev = start;
|
|
15
|
-
for (let index = 1; index < sorted.length; index++) {
|
|
16
|
-
const addr = sorted[index];
|
|
17
|
-
if (addr <= prev + 1) {
|
|
18
|
-
prev = addr;
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
segments.push({ start, end: prev + 1 });
|
|
22
|
-
start = addr;
|
|
23
|
-
prev = addr;
|
|
24
|
-
}
|
|
25
|
-
segments.push({ start, end: prev + 1 });
|
|
26
|
-
return segments;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Compute the effective written range for an emitted byte map.
|
|
30
|
-
*
|
|
31
|
-
* - If `map.writtenRange` is present, it is returned directly.
|
|
32
|
-
* - Otherwise, the range is derived from the min/max written addresses.
|
|
33
|
-
* - For an empty map, `{ start: 0, end: 0 }` is returned.
|
|
34
|
-
*/
|
|
35
|
-
export function getWrittenRange(map) {
|
|
36
|
-
if (map.writtenRange)
|
|
37
|
-
return map.writtenRange;
|
|
38
|
-
const segments = getWrittenSegments(map);
|
|
39
|
-
if (segments.length === 0)
|
|
40
|
-
return { start: 0, end: 0 };
|
|
41
|
-
return {
|
|
42
|
-
start: segments[0].start,
|
|
43
|
-
end: segments[segments.length - 1].end,
|
|
44
|
-
};
|
|
45
|
-
}
|