@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
package/dist/src/core/compile.js
CHANGED
|
@@ -4,15 +4,18 @@ import { createSourceFile } from '../source/source-file.js';
|
|
|
4
4
|
import { scanLogicalLines } from '../source/logical-lines.js';
|
|
5
5
|
import { stripLineComment } from '../source/strip-line-comment.js';
|
|
6
6
|
import { parseLogicalLine } from '../syntax/parse-line.js';
|
|
7
|
-
import { parseTypeExpr } from '../syntax/parse-expression.js';
|
|
7
|
+
import { parseExpression, parseTypeExpr } from '../syntax/parse-expression.js';
|
|
8
8
|
import { collectOps, expandOpInvocation, parseOpInvocation } from '../expansion/op-expansion.js';
|
|
9
|
+
import { normalizeDirectiveAlias } from '../syntax/directive-aliases.js';
|
|
10
|
+
import { evaluateExpression, lookupEquateRecord, } from '../semantics/expression-evaluation.js';
|
|
9
11
|
export function parseNextSourceItems(lines, options = {}) {
|
|
10
12
|
const diagnostics = [];
|
|
11
13
|
const items = [];
|
|
12
|
-
const pendingLines = [...lines];
|
|
13
14
|
const parseOptions = options.directiveAliasPolicy === undefined
|
|
14
15
|
? {}
|
|
15
16
|
: { directiveAliasPolicy: options.directiveAliasPolicy };
|
|
17
|
+
const conditional = applyConditionalAssembly(lines, diagnostics, parseOptions.directiveAliasPolicy);
|
|
18
|
+
const pendingLines = [...conditional.lines];
|
|
16
19
|
const { ops, opLineIndexes } = collectOps(pendingLines, diagnostics, parseOptions);
|
|
17
20
|
let afterTopLevelEnd = false;
|
|
18
21
|
for (let index = 0; index < pendingLines.length; index += 1) {
|
|
@@ -23,9 +26,61 @@ export function parseNextSourceItems(lines, options = {}) {
|
|
|
23
26
|
if (afterTopLevelEnd && !isPostEndParseAllowed(line.text)) {
|
|
24
27
|
continue;
|
|
25
28
|
}
|
|
26
|
-
const
|
|
29
|
+
const colonLayoutHeader = /^([A-Za-z_][A-Za-z0-9_]*):\s*\.(type|union)\s*$/.exec(stripLineComment(line.text).trim());
|
|
30
|
+
if (colonLayoutHeader) {
|
|
31
|
+
const directive = colonLayoutHeader[2] ?? 'type';
|
|
32
|
+
diagnostics.push(parseDiagnostic(line, `Use "${colonLayoutHeader[1] ?? ''} .${directive}" for layouts; colon labels mark addresses.`));
|
|
33
|
+
const endDirective = directive === 'union' ? '.endunion' : '.endtype';
|
|
34
|
+
for (index += 1; index < pendingLines.length; index += 1) {
|
|
35
|
+
if (stripLineComment(pendingLines[index].text).trim() === endDirective) {
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const nameLeftTypeAlias = /^([A-Za-z_][A-Za-z0-9_]*)\s+\.typealias\s+(.+)$/.exec(stripLineComment(line.text).trim());
|
|
42
|
+
if (nameLeftTypeAlias) {
|
|
43
|
+
const typeExprText = nameLeftTypeAlias[2] ?? '';
|
|
44
|
+
const typeExpr = parseTypeExpr(typeExprText);
|
|
45
|
+
if (!typeExpr) {
|
|
46
|
+
diagnostics.push(parseDiagnostic(line, `invalid .typealias target: ${typeExprText}`));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
items.push({
|
|
50
|
+
kind: 'type-alias',
|
|
51
|
+
name: nameLeftTypeAlias[1] ?? '',
|
|
52
|
+
typeExpr,
|
|
53
|
+
span: { sourceName: line.sourceName, line: line.line, column: firstColumn(line.text) },
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const typeAlias = /^\.type\s+([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.+)$/.exec(stripLineComment(line.text).trim());
|
|
59
|
+
if (typeAlias) {
|
|
60
|
+
diagnostics.push(parseDiagnostic(line, `Use "${typeAlias[1] ?? ''} .typealias ..." for type aliases.`));
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const nameLeftLayoutHeader = /^([A-Za-z_][A-Za-z0-9_]*)\s+\.(type|union)\s*$/.exec(stripLineComment(line.text).trim());
|
|
64
|
+
const prefixLayoutHeader = /^\.(type|union)\s+([A-Za-z_][A-Za-z0-9_]*)\s*$/.exec(stripLineComment(line.text).trim());
|
|
65
|
+
if (prefixLayoutHeader) {
|
|
66
|
+
const directive = prefixLayoutHeader[1] ?? 'type';
|
|
67
|
+
diagnostics.push(parseDiagnostic(line, `Use "${prefixLayoutHeader[2] ?? ''} .${directive}" for layouts.`));
|
|
68
|
+
const endDirective = directive === 'union' ? '.endunion' : '.endtype';
|
|
69
|
+
for (index += 1; index < pendingLines.length; index += 1) {
|
|
70
|
+
if (stripLineComment(pendingLines[index].text).trim() === endDirective) {
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const layoutHeader = nameLeftLayoutHeader
|
|
77
|
+
? {
|
|
78
|
+
directive: nameLeftLayoutHeader[2] ?? '',
|
|
79
|
+
name: nameLeftLayoutHeader[1] ?? '',
|
|
80
|
+
}
|
|
81
|
+
: undefined;
|
|
27
82
|
if (layoutHeader) {
|
|
28
|
-
const layoutKind =
|
|
83
|
+
const layoutKind = layoutHeader.directive === 'union' ? 'union' : 'record';
|
|
29
84
|
const endDirective = layoutKind === 'union' ? '.endunion' : '.endtype';
|
|
30
85
|
const fields = [];
|
|
31
86
|
let terminated = false;
|
|
@@ -35,23 +90,23 @@ export function parseNextSourceItems(lines, options = {}) {
|
|
|
35
90
|
if (fieldText.length === 0) {
|
|
36
91
|
continue;
|
|
37
92
|
}
|
|
38
|
-
if (fieldText
|
|
93
|
+
if (fieldText === endDirective) {
|
|
39
94
|
terminated = true;
|
|
40
95
|
break;
|
|
41
96
|
}
|
|
42
97
|
const field = parseLayoutField(fieldText);
|
|
43
98
|
if (!field) {
|
|
44
|
-
diagnostics.push(parseDiagnostic(fieldLine, `invalid .${layoutHeader
|
|
99
|
+
diagnostics.push(parseDiagnostic(fieldLine, `invalid .${layoutHeader.directive} field declaration`));
|
|
45
100
|
continue;
|
|
46
101
|
}
|
|
47
102
|
fields.push(field);
|
|
48
103
|
}
|
|
49
104
|
if (!terminated) {
|
|
50
|
-
diagnostics.push(parseDiagnostic(line, `.${layoutHeader
|
|
105
|
+
diagnostics.push(parseDiagnostic(line, `.${layoutHeader.directive} ${layoutHeader.name} missing ${endDirective}`));
|
|
51
106
|
}
|
|
52
107
|
items.push({
|
|
53
108
|
kind: 'type',
|
|
54
|
-
name: layoutHeader
|
|
109
|
+
name: layoutHeader.name,
|
|
55
110
|
layoutKind,
|
|
56
111
|
fields,
|
|
57
112
|
span: { sourceName: line.sourceName, line: line.line, column: firstColumn(line.text) },
|
|
@@ -78,6 +133,134 @@ export function parseNextSourceItems(lines, options = {}) {
|
|
|
78
133
|
}
|
|
79
134
|
return { diagnostics, items };
|
|
80
135
|
}
|
|
136
|
+
function applyConditionalAssembly(lines, diagnostics, directiveAliasPolicy) {
|
|
137
|
+
const out = [];
|
|
138
|
+
const equates = new Map();
|
|
139
|
+
const locationDependentEquates = new Set();
|
|
140
|
+
const stack = [];
|
|
141
|
+
for (const line of lines) {
|
|
142
|
+
const text = stripLineComment(line.text).trim();
|
|
143
|
+
const ifDirective = /^\.if\s+(.+)$/.exec(text);
|
|
144
|
+
if (ifDirective) {
|
|
145
|
+
const parentActive = conditionalActive(stack);
|
|
146
|
+
const expressionText = ifDirective[1] ?? '';
|
|
147
|
+
const value = parentActive
|
|
148
|
+
? evaluateConditionalExpression(line, expressionText, equates, locationDependentEquates, diagnostics)
|
|
149
|
+
: undefined;
|
|
150
|
+
const conditionActive = parentActive && value !== undefined && value !== 0;
|
|
151
|
+
stack.push({ line, parentActive, conditionActive, elseSeen: false });
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (/^\.else\s*$/.test(text)) {
|
|
155
|
+
const frame = stack.pop();
|
|
156
|
+
if (!frame) {
|
|
157
|
+
diagnostics.push(parseDiagnostic(line, 'unmatched .else'));
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (frame.elseSeen) {
|
|
161
|
+
diagnostics.push(parseDiagnostic(line, 'duplicate .else'));
|
|
162
|
+
}
|
|
163
|
+
stack.push({
|
|
164
|
+
line: frame.line,
|
|
165
|
+
parentActive: frame.parentActive,
|
|
166
|
+
conditionActive: frame.parentActive && !frame.conditionActive,
|
|
167
|
+
elseSeen: true,
|
|
168
|
+
});
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
if (/^\.endif\s*$/.test(text)) {
|
|
172
|
+
if (!stack.pop()) {
|
|
173
|
+
diagnostics.push(parseDiagnostic(line, 'unmatched .endif'));
|
|
174
|
+
}
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
if (!conditionalActive(stack)) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
out.push(line);
|
|
181
|
+
recordConditionalEquate(line, equates, locationDependentEquates, directiveAliasPolicy);
|
|
182
|
+
}
|
|
183
|
+
for (const frame of stack) {
|
|
184
|
+
diagnostics.push(parseDiagnostic(frame.line, 'unterminated .if'));
|
|
185
|
+
}
|
|
186
|
+
return { lines: out };
|
|
187
|
+
}
|
|
188
|
+
function conditionalActive(stack) {
|
|
189
|
+
return stack.every((frame) => frame.parentActive && frame.conditionActive);
|
|
190
|
+
}
|
|
191
|
+
function evaluateConditionalExpression(line, expressionText, equates, locationDependentEquates, diagnostics) {
|
|
192
|
+
const expression = parseExpression(expressionText);
|
|
193
|
+
if (!expression) {
|
|
194
|
+
diagnostics.push(parseDiagnostic(line, `invalid .if expression: ${expressionText}`));
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
if (expressionReferencesCurrentLocation(expression, equates, locationDependentEquates)) {
|
|
198
|
+
diagnostics.push(parseDiagnostic(line, 'invalid .if expression: current location is not available during conditional assembly'));
|
|
199
|
+
return undefined;
|
|
200
|
+
}
|
|
201
|
+
return evaluateExpression(expression, {}, equates, { sourceName: line.sourceName, line: line.line, column: firstColumn(line.text) }, diagnostics, { currentLocation: 0 });
|
|
202
|
+
}
|
|
203
|
+
function recordConditionalEquate(line, equates, locationDependentEquates, directiveAliasPolicy) {
|
|
204
|
+
const text = normalizeDirectiveAlias(stripLineComment(line.text), directiveAliasPolicy).trim();
|
|
205
|
+
const statement = /^(@?[A-Za-z_.$?][A-Za-z0-9_.$?]*):\s*(.+)$/.exec(text);
|
|
206
|
+
if (statement && /^\.equ\b/.test(statement[2] ?? '')) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const equ = /^([A-Za-z_.$?][A-Za-z0-9_.$?]*)\s+\.equ\s+(.+)$/.exec(text);
|
|
210
|
+
if (!equ) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const name = equ[1] ?? '';
|
|
214
|
+
const expressionText = equ[2] ?? '';
|
|
215
|
+
const expression = parseExpression(expressionText);
|
|
216
|
+
if (!expression) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (expressionReferencesCurrentLocation(expression, equates, locationDependentEquates)) {
|
|
220
|
+
locationDependentEquates.add(canonicalConditionalSymbolKey(name));
|
|
221
|
+
}
|
|
222
|
+
equates.set(name, {
|
|
223
|
+
expression,
|
|
224
|
+
span: { sourceName: line.sourceName, line: line.line, column: firstColumn(line.text) },
|
|
225
|
+
currentLocation: 0,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
function expressionReferencesCurrentLocation(expression, equates, locationDependentEquates, visiting = new Set()) {
|
|
229
|
+
switch (expression.kind) {
|
|
230
|
+
case 'current-location':
|
|
231
|
+
return true;
|
|
232
|
+
case 'symbol': {
|
|
233
|
+
if (locationDependentEquates.has(canonicalConditionalSymbolKey(expression.name))) {
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
const lookup = lookupEquateRecord(equates, expression.name);
|
|
237
|
+
if (!lookup || visiting.has(canonicalConditionalSymbolKey(lookup.key))) {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
const nextVisiting = new Set(visiting);
|
|
241
|
+
nextVisiting.add(canonicalConditionalSymbolKey(lookup.key));
|
|
242
|
+
return expressionReferencesCurrentLocation(lookup.record.expression, equates, locationDependentEquates, nextVisiting);
|
|
243
|
+
}
|
|
244
|
+
case 'byte-function':
|
|
245
|
+
case 'unary':
|
|
246
|
+
return expressionReferencesCurrentLocation(expression.expression, equates, locationDependentEquates, visiting);
|
|
247
|
+
case 'binary':
|
|
248
|
+
return (expressionReferencesCurrentLocation(expression.left, equates, locationDependentEquates, visiting) ||
|
|
249
|
+
expressionReferencesCurrentLocation(expression.right, equates, locationDependentEquates, visiting));
|
|
250
|
+
case 'layout-cast':
|
|
251
|
+
return (expressionReferencesCurrentLocation(expression.base, equates, locationDependentEquates, visiting) ||
|
|
252
|
+
expression.path.some((part) => part.kind === 'index' &&
|
|
253
|
+
expressionReferencesCurrentLocation(part.expression, equates, locationDependentEquates, visiting)));
|
|
254
|
+
case 'number':
|
|
255
|
+
case 'type-size':
|
|
256
|
+
case 'sizeof':
|
|
257
|
+
case 'offset':
|
|
258
|
+
return false;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function canonicalConditionalSymbolKey(name) {
|
|
262
|
+
return name.toLowerCase();
|
|
263
|
+
}
|
|
81
264
|
export function compileSource(sourceText, options = {}) {
|
|
82
265
|
const source = createSourceFile(options.entryName ?? '<memory>', sourceText);
|
|
83
266
|
const { diagnostics, items } = parseNextSourceItems(scanLogicalLines(source));
|
|
@@ -107,7 +290,7 @@ function isPostEndParseAllowed(text) {
|
|
|
107
290
|
return /^(?:\.binfrom|\.binto|binfrom|binto)\b/i.test(stripLineComment(text).trim());
|
|
108
291
|
}
|
|
109
292
|
function parseLayoutField(text) {
|
|
110
|
-
const match = /^([A-Za-z_][A-Za-z0-9_]*)\s+(\.(?:field|byte|word|addr))(?:\s+(.+))
|
|
293
|
+
const match = /^([A-Za-z_][A-Za-z0-9_]*)\s+(\.(?:field|byte|word|addr))(?:\s+(.+))?$/.exec(text);
|
|
111
294
|
if (!match) {
|
|
112
295
|
return undefined;
|
|
113
296
|
}
|
|
@@ -663,9 +663,11 @@ function renameSourceItem(item, localLabelMap) {
|
|
|
663
663
|
...item,
|
|
664
664
|
instruction: renameInstructionExpressions(item.instruction, localLabelMap),
|
|
665
665
|
};
|
|
666
|
+
case 'comment':
|
|
666
667
|
case 'end':
|
|
667
668
|
case 'enum':
|
|
668
669
|
case 'type':
|
|
670
|
+
case 'type-alias':
|
|
669
671
|
case 'string-data':
|
|
670
672
|
return item;
|
|
671
673
|
}
|
|
@@ -12,6 +12,10 @@ export type Expression = {
|
|
|
12
12
|
} | {
|
|
13
13
|
readonly kind: 'sizeof';
|
|
14
14
|
readonly typeExpr: TypeExpr;
|
|
15
|
+
} | {
|
|
16
|
+
readonly kind: 'byte-function';
|
|
17
|
+
readonly function: 'LSB' | 'MSB';
|
|
18
|
+
readonly expression: Expression;
|
|
15
19
|
} | {
|
|
16
20
|
readonly kind: 'offset';
|
|
17
21
|
readonly typeExpr: TypeExpr;
|
|
@@ -14,6 +14,12 @@ export type SourceItem = {
|
|
|
14
14
|
} | {
|
|
15
15
|
readonly kind: 'label';
|
|
16
16
|
readonly name: string;
|
|
17
|
+
readonly isEntry?: boolean;
|
|
18
|
+
readonly span: SourceSpan;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: 'comment';
|
|
21
|
+
readonly text: string;
|
|
22
|
+
readonly origin: 'user' | 'generated';
|
|
17
23
|
readonly span: SourceSpan;
|
|
18
24
|
} | {
|
|
19
25
|
readonly kind: 'db';
|
|
@@ -54,6 +60,11 @@ export type SourceItem = {
|
|
|
54
60
|
readonly layoutKind: 'record' | 'union';
|
|
55
61
|
readonly fields: readonly LayoutField[];
|
|
56
62
|
readonly span: SourceSpan;
|
|
63
|
+
} | {
|
|
64
|
+
readonly kind: 'type-alias';
|
|
65
|
+
readonly name: string;
|
|
66
|
+
readonly typeExpr: TypeExpr;
|
|
67
|
+
readonly span: SourceSpan;
|
|
57
68
|
} | {
|
|
58
69
|
readonly kind: 'string-data';
|
|
59
70
|
readonly directive: 'cstr' | 'pstr' | 'istr';
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { writeBin } from './write-bin.js';
|
|
2
2
|
import { writeD8m } from './write-d8.js';
|
|
3
3
|
import { writeHex } from './write-hex.js';
|
|
4
|
-
import { writeListing } from './write-listing.js';
|
|
5
4
|
import { writeAsm80 } from './write-asm80.js';
|
|
6
5
|
/** Default in-memory writers for Stage 12 compile API. */
|
|
7
6
|
export const defaultFormatWriters = {
|
|
8
7
|
writeBin,
|
|
9
8
|
writeHex,
|
|
10
9
|
writeD8m,
|
|
11
|
-
writeListing,
|
|
12
10
|
writeAsm80,
|
|
13
11
|
};
|
|
@@ -21,7 +21,7 @@ export interface EmittedSourceSegment {
|
|
|
21
21
|
kind: D8mSegmentKind;
|
|
22
22
|
confidence: D8mSegmentConfidence;
|
|
23
23
|
}
|
|
24
|
-
/** Symbol metadata shared by
|
|
24
|
+
/** Symbol metadata shared by output writers. */
|
|
25
25
|
export type SymbolEntry = {
|
|
26
26
|
kind: 'label' | 'data';
|
|
27
27
|
name: string;
|
|
@@ -50,12 +50,6 @@ export interface HexArtifact {
|
|
|
50
50
|
path?: string;
|
|
51
51
|
text: string;
|
|
52
52
|
}
|
|
53
|
-
/** Listing artifact. */
|
|
54
|
-
export interface ListingArtifact {
|
|
55
|
-
kind: 'lst';
|
|
56
|
-
path?: string;
|
|
57
|
-
text: string;
|
|
58
|
-
}
|
|
59
53
|
/** In-memory register-care audit report artifact. */
|
|
60
54
|
export interface RegisterCareReportArtifact {
|
|
61
55
|
kind: 'register-care-report';
|
|
@@ -122,7 +116,6 @@ export interface D8mGenerator {
|
|
|
122
116
|
version?: string;
|
|
123
117
|
inputs?: {
|
|
124
118
|
entry?: string;
|
|
125
|
-
listing?: string;
|
|
126
119
|
hex?: string;
|
|
127
120
|
bin?: string;
|
|
128
121
|
};
|
|
@@ -153,16 +146,11 @@ export interface WriteBinOptions {
|
|
|
153
146
|
binFrom?: number;
|
|
154
147
|
startAddress?: number;
|
|
155
148
|
}
|
|
156
|
-
export interface WriteListingOptions {
|
|
157
|
-
lineEnding?: '\n' | '\r\n';
|
|
158
|
-
bytesPerLine?: number;
|
|
159
|
-
}
|
|
160
149
|
export interface WriteD8mOptions {
|
|
161
150
|
rootDir?: string;
|
|
162
151
|
packageVersion?: string;
|
|
163
152
|
inputs?: {
|
|
164
153
|
entry?: string;
|
|
165
|
-
listing?: string;
|
|
166
154
|
hex?: string;
|
|
167
155
|
bin?: string;
|
|
168
156
|
};
|
|
@@ -171,12 +159,11 @@ export interface WriteD8mOptions {
|
|
|
171
159
|
}
|
|
172
160
|
export interface WriteAsm80Options {
|
|
173
161
|
}
|
|
174
|
-
export type Artifact = BinArtifact | HexArtifact |
|
|
175
|
-
/** Writer contract used by the
|
|
162
|
+
export type Artifact = BinArtifact | HexArtifact | D8mArtifact | Asm80Artifact | RegisterCareReportArtifact | RegisterCareInterfaceArtifact | RegisterCareAnnotationsArtifact;
|
|
163
|
+
/** Writer contract used by the compile API. */
|
|
176
164
|
export interface FormatWriters {
|
|
177
165
|
writeHex(map: EmittedByteMap, symbols: readonly SymbolEntry[], opts?: WriteHexOptions): HexArtifact;
|
|
178
166
|
writeBin(map: EmittedByteMap, symbols: readonly SymbolEntry[], opts?: WriteBinOptions): BinArtifact;
|
|
179
167
|
writeD8m(map: EmittedByteMap, symbols: readonly SymbolEntry[], opts?: WriteD8mOptions): D8mArtifact;
|
|
180
|
-
writeListing?(map: EmittedByteMap, symbols: readonly SymbolEntry[], opts?: WriteListingOptions): ListingArtifact;
|
|
181
168
|
writeAsm80?(items: readonly SourceItem[], symbols: readonly SymbolEntry[], opts?: WriteAsm80Options): Asm80Artifact;
|
|
182
169
|
}
|