@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.
Files changed (334) hide show
  1. package/README.md +110 -78
  2. package/dist/src/api-compile.d.ts +0 -2
  3. package/dist/src/api-compile.js +2 -9
  4. package/dist/src/assembly/address-planning.js +21 -1
  5. package/dist/src/assembly/program-emission.js +1 -0
  6. package/dist/src/cli/parse-args.d.ts +0 -1
  7. package/dist/src/cli/parse-args.js +0 -7
  8. package/dist/src/cli/write-artifacts.js +0 -11
  9. package/dist/src/core/compile.js +192 -9
  10. package/dist/src/expansion/op-expansion.js +2 -0
  11. package/dist/src/model/expression.d.ts +4 -0
  12. package/dist/src/model/source-item.d.ts +11 -0
  13. package/dist/src/outputs/index.js +0 -2
  14. package/dist/src/outputs/types.d.ts +3 -16
  15. package/dist/src/outputs/write-asm80.js +206 -5
  16. package/dist/src/register-care/analyze.js +36 -8
  17. package/dist/src/register-care/annotations.js +33 -146
  18. package/dist/src/register-care/fix.d.ts +2 -0
  19. package/dist/src/register-care/fix.js +52 -0
  20. package/dist/src/register-care/instruction-shape.d.ts +11 -0
  21. package/dist/src/register-care/instruction-shape.js +129 -0
  22. package/dist/src/register-care/liveness.js +15 -7
  23. package/dist/src/register-care/profiles.js +4 -0
  24. package/dist/src/register-care/programModel.js +79 -13
  25. package/dist/src/register-care/report.d.ts +2 -1
  26. package/dist/src/register-care/report.js +91 -34
  27. package/dist/src/register-care/routine-summaries.d.ts +6 -0
  28. package/dist/src/register-care/routine-summaries.js +89 -0
  29. package/dist/src/register-care/summaries.d.ts +3 -3
  30. package/dist/src/register-care/summaries.js +42 -75
  31. package/dist/{legacy-root-azm/src/registerCare → src/register-care}/summary.js +33 -51
  32. package/dist/src/register-care/types.d.ts +6 -1
  33. package/dist/src/semantics/expression-evaluation.d.ts +7 -3
  34. package/dist/src/semantics/expression-evaluation.js +57 -0
  35. package/dist/src/source/strip-line-comment.d.ts +2 -0
  36. package/dist/src/source/strip-line-comment.js +26 -0
  37. package/dist/src/syntax/directive-aliases.js +9 -10
  38. package/dist/src/syntax/parse-diagnostics.d.ts +12 -0
  39. package/dist/src/syntax/parse-diagnostics.js +18 -0
  40. package/dist/src/syntax/parse-expression.js +34 -9
  41. package/dist/src/syntax/parse-line.js +150 -54
  42. package/dist/src/tooling/case-style.js +3 -0
  43. package/docs/reference/cli.md +6 -4
  44. package/docs/reference/tooling-api.md +13 -9
  45. package/package.json +4 -6
  46. package/dist/legacy-root-azm/src/analysis.d.ts +0 -11
  47. package/dist/legacy-root-azm/src/analysis.js +0 -41
  48. package/dist/legacy-root-azm/src/compile.d.ts +0 -10
  49. package/dist/legacy-root-azm/src/compile.js +0 -186
  50. package/dist/legacy-root-azm/src/compileShared.d.ts +0 -3
  51. package/dist/legacy-root-azm/src/compileShared.js +0 -7
  52. package/dist/legacy-root-azm/src/diagnosticTypes.d.ts +0 -77
  53. package/dist/legacy-root-azm/src/diagnosticTypes.js +0 -53
  54. package/dist/legacy-root-azm/src/formats/index.d.ts +0 -7
  55. package/dist/legacy-root-azm/src/formats/index.js +0 -17
  56. package/dist/legacy-root-azm/src/formats/range.d.ts +0 -17
  57. package/dist/legacy-root-azm/src/formats/range.js +0 -45
  58. package/dist/legacy-root-azm/src/formats/types.d.ts +0 -283
  59. package/dist/legacy-root-azm/src/formats/types.js +0 -1
  60. package/dist/legacy-root-azm/src/formats/writeAsm80.d.ts +0 -6
  61. package/dist/legacy-root-azm/src/formats/writeAsm80.js +0 -86
  62. package/dist/legacy-root-azm/src/formats/writeBin.d.ts +0 -7
  63. package/dist/legacy-root-azm/src/formats/writeBin.js +0 -23
  64. package/dist/legacy-root-azm/src/formats/writeD8m.d.ts +0 -9
  65. package/dist/legacy-root-azm/src/formats/writeD8m.js +0 -245
  66. package/dist/legacy-root-azm/src/formats/writeHex.d.ts +0 -8
  67. package/dist/legacy-root-azm/src/formats/writeHex.js +0 -38
  68. package/dist/legacy-root-azm/src/formats/writeListing.d.ts +0 -8
  69. package/dist/legacy-root-azm/src/formats/writeListing.js +0 -83
  70. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.d.ts +0 -39
  71. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.js +0 -89
  72. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.d.ts +0 -4
  73. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.js +0 -94
  74. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.d.ts +0 -10
  75. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.js +0 -25
  76. package/dist/legacy-root-azm/src/frontend/ast.d.ts +0 -376
  77. package/dist/legacy-root-azm/src/frontend/ast.js +0 -1
  78. package/dist/legacy-root-azm/src/frontend/directiveAliases.d.ts +0 -14
  79. package/dist/legacy-root-azm/src/frontend/directiveAliases.js +0 -189
  80. package/dist/legacy-root-azm/src/frontend/grammarData.d.ts +0 -14
  81. package/dist/legacy-root-azm/src/frontend/grammarData.js +0 -65
  82. package/dist/legacy-root-azm/src/frontend/immExprUtils.d.ts +0 -2
  83. package/dist/legacy-root-azm/src/frontend/immExprUtils.js +0 -12
  84. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.d.ts +0 -17
  85. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.js +0 -187
  86. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.d.ts +0 -3
  87. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.js +0 -73
  88. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.d.ts +0 -6
  89. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.js +0 -16
  90. package/dist/legacy-root-azm/src/frontend/parseAsmStream.d.ts +0 -10
  91. package/dist/legacy-root-azm/src/frontend/parseAsmStream.js +0 -33
  92. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.d.ts +0 -18
  93. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.js +0 -34
  94. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.d.ts +0 -9
  95. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.js +0 -16
  96. package/dist/legacy-root-azm/src/frontend/parseEnum.d.ts +0 -12
  97. package/dist/legacy-root-azm/src/frontend/parseEnum.js +0 -70
  98. package/dist/legacy-root-azm/src/frontend/parseImm.d.ts +0 -10
  99. package/dist/legacy-root-azm/src/frontend/parseImm.js +0 -397
  100. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.d.ts +0 -11
  101. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.js +0 -94
  102. package/dist/legacy-root-azm/src/frontend/parseOp.d.ts +0 -25
  103. package/dist/legacy-root-azm/src/frontend/parseOp.js +0 -120
  104. package/dist/legacy-root-azm/src/frontend/parseOpHeader.d.ts +0 -20
  105. package/dist/legacy-root-azm/src/frontend/parseOpHeader.js +0 -32
  106. package/dist/legacy-root-azm/src/frontend/parseOperands.d.ts +0 -4
  107. package/dist/legacy-root-azm/src/frontend/parseOperands.js +0 -290
  108. package/dist/legacy-root-azm/src/frontend/parseParams.d.ts +0 -6
  109. package/dist/legacy-root-azm/src/frontend/parseParams.js +0 -62
  110. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.d.ts +0 -12
  111. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.js +0 -17
  112. package/dist/legacy-root-azm/src/frontend/parseParserShared.d.ts +0 -2
  113. package/dist/legacy-root-azm/src/frontend/parseParserShared.js +0 -8
  114. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.d.ts +0 -1
  115. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.js +0 -3
  116. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.d.ts +0 -7
  117. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.js +0 -142
  118. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.d.ts +0 -34
  119. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.js +0 -177
  120. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.d.ts +0 -46
  121. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.js +0 -53
  122. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.d.ts +0 -16
  123. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.js +0 -68
  124. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.d.ts +0 -11
  125. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.js +0 -50
  126. package/dist/legacy-root-azm/src/frontend/parseTypes.d.ts +0 -24
  127. package/dist/legacy-root-azm/src/frontend/parseTypes.js +0 -77
  128. package/dist/legacy-root-azm/src/frontend/parser.d.ts +0 -11
  129. package/dist/legacy-root-azm/src/frontend/parser.js +0 -88
  130. package/dist/legacy-root-azm/src/frontend/source.d.ts +0 -28
  131. package/dist/legacy-root-azm/src/frontend/source.js +0 -58
  132. package/dist/legacy-root-azm/src/frontend/sourceExtensions.d.ts +0 -2
  133. package/dist/legacy-root-azm/src/frontend/sourceExtensions.js +0 -6
  134. package/dist/legacy-root-azm/src/lintCaseStyle.d.ts +0 -4
  135. package/dist/legacy-root-azm/src/lintCaseStyle.js +0 -129
  136. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.d.ts +0 -4
  137. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.js +0 -229
  138. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.d.ts +0 -47
  139. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.js +0 -52
  140. package/dist/legacy-root-azm/src/lowering/asmEquResolution.d.ts +0 -8
  141. package/dist/legacy-root-azm/src/lowering/asmEquResolution.js +0 -69
  142. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.d.ts +0 -15
  143. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.js +0 -102
  144. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.d.ts +0 -5
  145. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.js +0 -54
  146. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.d.ts +0 -46
  147. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.js +0 -51
  148. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.d.ts +0 -43
  149. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.js +0 -254
  150. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.d.ts +0 -23
  151. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.js +0 -1
  152. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.d.ts +0 -28
  153. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.js +0 -144
  154. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.d.ts +0 -17
  155. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.js +0 -39
  156. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.d.ts +0 -16
  157. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.js +0 -209
  158. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.d.ts +0 -4
  159. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.js +0 -9
  160. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.d.ts +0 -4
  161. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.js +0 -14
  162. package/dist/legacy-root-azm/src/lowering/asmUtils.d.ts +0 -13
  163. package/dist/legacy-root-azm/src/lowering/asmUtils.js +0 -105
  164. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.d.ts +0 -54
  165. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.js +0 -128
  166. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.d.ts +0 -151
  167. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.js +0 -16
  168. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.d.ts +0 -7
  169. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.js +0 -75
  170. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.d.ts +0 -66
  171. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.js +0 -166
  172. package/dist/legacy-root-azm/src/lowering/bytePlacement.d.ts +0 -7
  173. package/dist/legacy-root-azm/src/lowering/bytePlacement.js +0 -37
  174. package/dist/legacy-root-azm/src/lowering/capabilities.d.ts +0 -67
  175. package/dist/legacy-root-azm/src/lowering/capabilities.js +0 -1
  176. package/dist/legacy-root-azm/src/lowering/eaResolution.d.ts +0 -58
  177. package/dist/legacy-root-azm/src/lowering/eaResolution.js +0 -159
  178. package/dist/legacy-root-azm/src/lowering/emissionCore.d.ts +0 -17
  179. package/dist/legacy-root-azm/src/lowering/emissionCore.js +0 -21
  180. package/dist/legacy-root-azm/src/lowering/emit.d.ts +0 -17
  181. package/dist/legacy-root-azm/src/lowering/emit.js +0 -46
  182. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.d.ts +0 -63
  183. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.js +0 -41
  184. package/dist/legacy-root-azm/src/lowering/emitFinalization.d.ts +0 -61
  185. package/dist/legacy-root-azm/src/lowering/emitFinalization.js +0 -66
  186. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.d.ts +0 -19
  187. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.js +0 -26
  188. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -7
  189. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.js +0 -119
  190. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.d.ts +0 -4
  191. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.js +0 -12
  192. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.d.ts +0 -21
  193. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.js +0 -1
  194. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.d.ts +0 -70
  195. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.js +0 -203
  196. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.d.ts +0 -82
  197. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.js +0 -55
  198. package/dist/legacy-root-azm/src/lowering/emitPipeline.d.ts +0 -121
  199. package/dist/legacy-root-azm/src/lowering/emitPipeline.js +0 -57
  200. package/dist/legacy-root-azm/src/lowering/emitProgramContext.d.ts +0 -39
  201. package/dist/legacy-root-azm/src/lowering/emitProgramContext.js +0 -29
  202. package/dist/legacy-root-azm/src/lowering/emitState.d.ts +0 -90
  203. package/dist/legacy-root-azm/src/lowering/emitState.js +0 -124
  204. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.d.ts +0 -7
  205. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.js +0 -23
  206. package/dist/legacy-root-azm/src/lowering/fixupEmission.d.ts +0 -64
  207. package/dist/legacy-root-azm/src/lowering/fixupEmission.js +0 -199
  208. package/dist/legacy-root-azm/src/lowering/immMath.d.ts +0 -2
  209. package/dist/legacy-root-azm/src/lowering/immMath.js +0 -34
  210. package/dist/legacy-root-azm/src/lowering/inputAssets.d.ts +0 -7
  211. package/dist/legacy-root-azm/src/lowering/inputAssets.js +0 -106
  212. package/dist/legacy-root-azm/src/lowering/ldEncoding.d.ts +0 -15
  213. package/dist/legacy-root-azm/src/lowering/ldEncoding.js +0 -12
  214. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.d.ts +0 -5
  215. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.js +0 -124
  216. package/dist/legacy-root-azm/src/lowering/ldFormSelection.d.ts +0 -26
  217. package/dist/legacy-root-azm/src/lowering/ldFormSelection.js +0 -92
  218. package/dist/legacy-root-azm/src/lowering/ldLowering.d.ts +0 -7
  219. package/dist/legacy-root-azm/src/lowering/ldLowering.js +0 -13
  220. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.d.ts +0 -23
  221. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.js +0 -185
  222. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.d.ts +0 -13
  223. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.js +0 -86
  224. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.d.ts +0 -27
  225. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.js +0 -215
  226. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.d.ts +0 -202
  227. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.js +0 -1
  228. package/dist/legacy-root-azm/src/lowering/loweredFormat.d.ts +0 -3
  229. package/dist/legacy-root-azm/src/lowering/loweredFormat.js +0 -26
  230. package/dist/legacy-root-azm/src/lowering/loweredItemSize.d.ts +0 -4
  231. package/dist/legacy-root-azm/src/lowering/loweredItemSize.js +0 -17
  232. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.d.ts +0 -9
  233. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.js +0 -55
  234. package/dist/legacy-root-azm/src/lowering/loweringTypes.d.ts +0 -27
  235. package/dist/legacy-root-azm/src/lowering/loweringTypes.js +0 -1
  236. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.d.ts +0 -9
  237. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.js +0 -9
  238. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.d.ts +0 -15
  239. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.js +0 -45
  240. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.d.ts +0 -15
  241. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.js +0 -88
  242. package/dist/legacy-root-azm/src/lowering/opExpansionStream.d.ts +0 -12
  243. package/dist/legacy-root-azm/src/lowering/opExpansionStream.js +0 -176
  244. package/dist/legacy-root-azm/src/lowering/opMatching.d.ts +0 -52
  245. package/dist/legacy-root-azm/src/lowering/opMatching.js +0 -355
  246. package/dist/legacy-root-azm/src/lowering/opSubstitution.d.ts +0 -13
  247. package/dist/legacy-root-azm/src/lowering/opSubstitution.js +0 -175
  248. package/dist/legacy-root-azm/src/lowering/prescanTypes.d.ts +0 -7
  249. package/dist/legacy-root-azm/src/lowering/prescanTypes.js +0 -1
  250. package/dist/legacy-root-azm/src/lowering/programLowering.d.ts +0 -144
  251. package/dist/legacy-root-azm/src/lowering/programLowering.js +0 -2
  252. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.d.ts +0 -5
  253. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.js +0 -5
  254. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.d.ts +0 -18
  255. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.js +0 -115
  256. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.d.ts +0 -2
  257. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.js +0 -93
  258. package/dist/legacy-root-azm/src/lowering/programPrescan.d.ts +0 -3
  259. package/dist/legacy-root-azm/src/lowering/programPrescan.js +0 -37
  260. package/dist/legacy-root-azm/src/lowering/traceFormat.d.ts +0 -13
  261. package/dist/legacy-root-azm/src/lowering/traceFormat.js +0 -211
  262. package/dist/legacy-root-azm/src/packageInfo.d.ts +0 -1
  263. package/dist/legacy-root-azm/src/packageInfo.js +0 -15
  264. package/dist/legacy-root-azm/src/pathCompare.d.ts +0 -3
  265. package/dist/legacy-root-azm/src/pathCompare.js +0 -26
  266. package/dist/legacy-root-azm/src/pipeline.d.ts +0 -91
  267. package/dist/legacy-root-azm/src/pipeline.js +0 -1
  268. package/dist/legacy-root-azm/src/registerCare/analyze.d.ts +0 -24
  269. package/dist/legacy-root-azm/src/registerCare/analyze.js +0 -327
  270. package/dist/legacy-root-azm/src/registerCare/boundaryHints.d.ts +0 -2
  271. package/dist/legacy-root-azm/src/registerCare/boundaryHints.js +0 -10
  272. package/dist/legacy-root-azm/src/registerCare/carriers.d.ts +0 -4
  273. package/dist/legacy-root-azm/src/registerCare/carriers.js +0 -78
  274. package/dist/legacy-root-azm/src/registerCare/controlFlow.d.ts +0 -5
  275. package/dist/legacy-root-azm/src/registerCare/controlFlow.js +0 -35
  276. package/dist/legacy-root-azm/src/registerCare/fix.d.ts +0 -11
  277. package/dist/legacy-root-azm/src/registerCare/fix.js +0 -119
  278. package/dist/legacy-root-azm/src/registerCare/liveness.d.ts +0 -7
  279. package/dist/legacy-root-azm/src/registerCare/liveness.js +0 -227
  280. package/dist/legacy-root-azm/src/registerCare/profiles.d.ts +0 -11
  281. package/dist/legacy-root-azm/src/registerCare/profiles.js +0 -45
  282. package/dist/legacy-root-azm/src/registerCare/programModel.d.ts +0 -3
  283. package/dist/legacy-root-azm/src/registerCare/programModel.js +0 -181
  284. package/dist/legacy-root-azm/src/registerCare/report.d.ts +0 -5
  285. package/dist/legacy-root-azm/src/registerCare/report.js +0 -139
  286. package/dist/legacy-root-azm/src/registerCare/smartComments.d.ts +0 -5
  287. package/dist/legacy-root-azm/src/registerCare/smartComments.js +0 -247
  288. package/dist/legacy-root-azm/src/registerCare/types.d.ts +0 -154
  289. package/dist/legacy-root-azm/src/registerCare/types.js +0 -1
  290. package/dist/legacy-root-azm/src/semantics/declVisitor.d.ts +0 -5
  291. package/dist/legacy-root-azm/src/semantics/declVisitor.js +0 -11
  292. package/dist/legacy-root-azm/src/semantics/env.d.ts +0 -28
  293. package/dist/legacy-root-azm/src/semantics/env.js +0 -432
  294. package/dist/legacy-root-azm/src/semantics/layout.d.ts +0 -21
  295. package/dist/legacy-root-azm/src/semantics/layout.js +0 -226
  296. package/dist/legacy-root-azm/src/semantics/layoutCastFold.d.ts +0 -22
  297. package/dist/legacy-root-azm/src/semantics/layoutCastFold.js +0 -118
  298. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.d.ts +0 -2
  299. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.js +0 -4
  300. package/dist/legacy-root-azm/src/semantics/typeQueries.d.ts +0 -31
  301. package/dist/legacy-root-azm/src/semantics/typeQueries.js +0 -124
  302. package/dist/legacy-root-azm/src/sourceIncludeExpansion.d.ts +0 -17
  303. package/dist/legacy-root-azm/src/sourceIncludeExpansion.js +0 -124
  304. package/dist/legacy-root-azm/src/sourceIncludePaths.d.ts +0 -1
  305. package/dist/legacy-root-azm/src/sourceIncludePaths.js +0 -12
  306. package/dist/legacy-root-azm/src/sourceLoader.d.ts +0 -15
  307. package/dist/legacy-root-azm/src/sourceLoader.js +0 -118
  308. package/dist/legacy-root-azm/src/z80/effects.d.ts +0 -3
  309. package/dist/legacy-root-azm/src/z80/effects.js +0 -516
  310. package/dist/legacy-root-azm/src/z80/encode.d.ts +0 -10
  311. package/dist/legacy-root-azm/src/z80/encode.js +0 -412
  312. package/dist/legacy-root-azm/src/z80/encodeAlu.d.ts +0 -7
  313. package/dist/legacy-root-azm/src/z80/encodeAlu.js +0 -219
  314. package/dist/legacy-root-azm/src/z80/encodeBitOps.d.ts +0 -7
  315. package/dist/legacy-root-azm/src/z80/encodeBitOps.js +0 -123
  316. package/dist/legacy-root-azm/src/z80/encodeContext.d.ts +0 -29
  317. package/dist/legacy-root-azm/src/z80/encodeContext.js +0 -1
  318. package/dist/legacy-root-azm/src/z80/encodeControl.d.ts +0 -26
  319. package/dist/legacy-root-azm/src/z80/encodeControl.js +0 -180
  320. package/dist/legacy-root-azm/src/z80/encodeCoreOps.d.ts +0 -7
  321. package/dist/legacy-root-azm/src/z80/encodeCoreOps.js +0 -131
  322. package/dist/legacy-root-azm/src/z80/encodeIo.d.ts +0 -9
  323. package/dist/legacy-root-azm/src/z80/encodeIo.js +0 -128
  324. package/dist/legacy-root-azm/src/z80/encodeLd.d.ts +0 -13
  325. package/dist/legacy-root-azm/src/z80/encodeLd.js +0 -273
  326. package/dist/legacy-root-azm/src/z80/encoderRegistry.d.ts +0 -13
  327. package/dist/legacy-root-azm/src/z80/encoderRegistry.js +0 -169
  328. package/dist/src/outputs/write-listing.d.ts +0 -2
  329. package/dist/src/outputs/write-listing.js +0 -79
  330. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/annotate.d.ts +0 -0
  331. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/annotate.js +0 -0
  332. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/sourceText.d.ts +0 -0
  333. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/sourceText.js +0 -0
  334. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/summary.d.ts +0 -0
@@ -1,247 +0,0 @@
1
- import { expandCarrierList } from './carriers.js';
2
- const COMPACT_SOURCE_TAG_RE = /^;?\s*!\s*(in|out|clobbers|preserves)(?:\s+(.+))?$/i;
3
- const COMPACT_SOURCE_LINE_RE = /^\s*;\s*!\s*(?:in|out|maybe-out|clobbers|preserves)(?:\s|$)/i;
4
- const INTERFACE_TAG_RE = /^\s*(in|out|clobbers|preserves)(?:\s+(.+))?$/i;
5
- const CARRIER_RE = /^\{([^}]+)\}(?:\s+(.+))?$/;
6
- function parseCarrierPayload(rest) {
7
- if (!rest)
8
- return undefined;
9
- const match = CARRIER_RE.exec(rest.trim());
10
- if (match) {
11
- const carriers = match[1]
12
- .split(',')
13
- .map((s) => s.trim())
14
- .filter(Boolean);
15
- const name = match[2]?.trim();
16
- return { carriers, ...(name ? { name } : {}) };
17
- }
18
- const tokens = rest.trim().split(/\s+/);
19
- const carriers = [];
20
- let consumed = 0;
21
- for (const token of tokens) {
22
- const cleaned = token.replace(/[.:;]+$/u, '');
23
- const parts = cleaned
24
- .split(',')
25
- .map((s) => s.trim())
26
- .filter(Boolean);
27
- if (parts.length === 0 || !expandCarrierList(parts))
28
- break;
29
- carriers.push(...parts);
30
- consumed += 1;
31
- }
32
- if (carriers.length === 0)
33
- return undefined;
34
- const name = tokens.slice(consumed).join(' ').trim();
35
- return { carriers, ...(name ? { name } : {}) };
36
- }
37
- export function parseSmartCommentLine(line) {
38
- const trimmed = line.trim();
39
- const expectOut = /^;?\s*expects\s+out\s+(.+)$/i.exec(trimmed);
40
- if (expectOut) {
41
- const payload = parseCarrierPayload(expectOut[1]?.trim());
42
- if (!payload)
43
- return undefined;
44
- const carriers = expandCarrierList(payload.carriers);
45
- if (!carriers || carriers.length === 0)
46
- return undefined;
47
- return { kind: 'expectOut', carriers, ...(payload.name ? { name: payload.name } : {}) };
48
- }
49
- const match = COMPACT_SOURCE_TAG_RE.exec(trimmed);
50
- if (!match)
51
- return undefined;
52
- const tag = match[1].toLowerCase();
53
- const rest = match[2]?.trim();
54
- const payload = parseCarrierPayload(rest);
55
- if (!payload)
56
- return undefined;
57
- const carriers = expandCarrierList(payload.carriers);
58
- if (!carriers || carriers.length === 0)
59
- return undefined;
60
- if (tag === 'in')
61
- return { kind: 'in', carriers, ...(payload.name ? { name: payload.name } : {}) };
62
- if (tag === 'out')
63
- return { kind: 'out', carriers, ...(payload.name ? { name: payload.name } : {}) };
64
- if (tag === 'clobbers')
65
- return { kind: 'clobbers', carriers };
66
- if (tag === 'preserves')
67
- return { kind: 'preserves', carriers };
68
- return undefined;
69
- }
70
- function parseInterfaceContractLine(line) {
71
- const trimmed = line.trim();
72
- if (trimmed.length === 0 || trimmed.startsWith(';'))
73
- return undefined;
74
- const extern = /^extern\s+(\S+)\s*$/i.exec(trimmed);
75
- if (extern)
76
- return { kind: 'extern', name: extern[1] };
77
- if (/^end\s*$/i.test(trimmed))
78
- return { kind: 'end' };
79
- const match = INTERFACE_TAG_RE.exec(trimmed);
80
- if (!match)
81
- return undefined;
82
- const tag = match[1].toLowerCase();
83
- const rest = match[2]?.trim();
84
- if (!rest)
85
- return undefined;
86
- const rawCarriers = rest.split(',').map((part) => part.trim());
87
- if (rawCarriers.length === 0 || rawCarriers.some((part) => part.length === 0)) {
88
- return undefined;
89
- }
90
- const carriers = expandCarrierList(rawCarriers);
91
- if (!carriers || carriers.length === 0)
92
- return undefined;
93
- if (tag === 'in')
94
- return { kind: 'in', carriers };
95
- if (tag === 'out')
96
- return { kind: 'out', carriers };
97
- if (tag === 'clobbers')
98
- return { kind: 'clobbers', carriers };
99
- if (tag === 'preserves')
100
- return { kind: 'preserves', carriers };
101
- return undefined;
102
- }
103
- function isCompactSourceContractLine(line) {
104
- return COMPACT_SOURCE_LINE_RE.test(line);
105
- }
106
- export function parseSmartComments(sourceLineComments) {
107
- const out = [];
108
- for (const [file, comments] of sourceLineComments) {
109
- for (const [line, text] of comments) {
110
- const parsed = parseSmartCommentLine(`;${text}`);
111
- if (parsed)
112
- out.push({ file, line, comment: parsed });
113
- }
114
- }
115
- return out.sort((a, b) => a.file.localeCompare(b.file) || a.line - b.line);
116
- }
117
- function appendUnique(out, items) {
118
- for (const item of items) {
119
- if (!out.includes(item))
120
- out.push(item);
121
- }
122
- }
123
- function applyContractComment(contract, comment) {
124
- if (comment.kind === 'in')
125
- appendUnique(contract.in, comment.carriers);
126
- if (comment.kind === 'out')
127
- appendUnique(contract.out, comment.carriers);
128
- if (comment.kind === 'clobbers')
129
- appendUnique(contract.clobbers, comment.carriers);
130
- if (comment.kind === 'preserves')
131
- appendUnique(contract.preserves, comment.carriers);
132
- }
133
- function hasContractContent(contract) {
134
- return (contract.in.length > 0 ||
135
- contract.out.length > 0 ||
136
- contract.clobbers.length > 0 ||
137
- contract.preserves.length > 0);
138
- }
139
- function isCommentOnlyLine(line) {
140
- return /^\s*;/.test(line);
141
- }
142
- function collectPrecedingCommentBlock(routine, sourceTexts) {
143
- const source = sourceTexts.get(routine.span.file);
144
- if (!source)
145
- return { comments: [], complete: false };
146
- const lines = source.split(/\r?\n/);
147
- const rawBlock = [];
148
- for (let index = routine.span.start.line - 2; index >= 0; index -= 1) {
149
- const raw = lines[index] ?? '';
150
- if (!isCommentOnlyLine(raw))
151
- break;
152
- rawBlock.push({ line: index + 1, text: raw });
153
- }
154
- rawBlock.reverse();
155
- let compactStart = rawBlock.length;
156
- while (compactStart > 0 && isCompactSourceContractLine(rawBlock[compactStart - 1]?.text ?? '')) {
157
- compactStart -= 1;
158
- }
159
- if (compactStart < rawBlock.length) {
160
- return {
161
- complete: true,
162
- comments: rawBlock.slice(compactStart).flatMap((item) => {
163
- const parsed = parseSmartCommentLine(item.text);
164
- return parsed ? [{ file: routine.span.file, line: item.line, comment: parsed }] : [];
165
- }),
166
- };
167
- }
168
- return {
169
- complete: false,
170
- comments: rawBlock.flatMap((item) => {
171
- const parsed = parseSmartCommentLine(item.text);
172
- return parsed ? [{ file: routine.span.file, line: item.line, comment: parsed }] : [];
173
- }),
174
- };
175
- }
176
- function buildImplicitRoutineContracts(routines, sourceTexts) {
177
- const contracts = new Map();
178
- for (const routine of routines) {
179
- const docBlock = collectPrecedingCommentBlock(routine, sourceTexts);
180
- if (docBlock.comments.some((item) => item.comment.kind === 'extern' || item.comment.kind === 'end')) {
181
- continue;
182
- }
183
- const contract = {
184
- name: routine.name,
185
- in: [],
186
- out: [],
187
- clobbers: [],
188
- preserves: [],
189
- ...(docBlock.complete ? { complete: true } : {}),
190
- };
191
- for (const item of docBlock.comments) {
192
- applyContractComment(contract, item.comment);
193
- }
194
- if (hasContractContent(contract))
195
- contracts.set(routine.name, contract);
196
- }
197
- return contracts;
198
- }
199
- export function buildRoutineContracts(comments, routines = [], sourceTexts = new Map()) {
200
- const contracts = new Map();
201
- let current;
202
- for (const item of comments) {
203
- const comment = item.comment;
204
- if (comment.kind === 'extern') {
205
- current = {
206
- name: comment.name,
207
- in: [],
208
- out: [],
209
- clobbers: [],
210
- preserves: [],
211
- complete: true,
212
- };
213
- contracts.set(comment.name, current);
214
- continue;
215
- }
216
- if (comment.kind === 'end') {
217
- current = undefined;
218
- continue;
219
- }
220
- if (!current)
221
- continue;
222
- applyContractComment(current, comment);
223
- }
224
- for (const [name, contract] of buildImplicitRoutineContracts(routines, sourceTexts)) {
225
- if (!contracts.has(name))
226
- contracts.set(name, contract);
227
- }
228
- return contracts;
229
- }
230
- export function parseInterfaceContracts(text, file = '<register-care-interface>') {
231
- const comments = [];
232
- const lines = text.split(/\r?\n/);
233
- lines.forEach((line, index) => {
234
- const trimmed = line.trim();
235
- if (trimmed.length === 0)
236
- return;
237
- if (trimmed.startsWith(';')) {
238
- throw new Error(`${file}:${index + 1}: .asmi files do not permit comments`);
239
- }
240
- const comment = parseInterfaceContractLine(line);
241
- if (!comment) {
242
- throw new Error(`${file}:${index + 1}: invalid register-care interface line "${trimmed}"`);
243
- }
244
- comments.push({ file, line: index + 1, comment });
245
- });
246
- return buildRoutineContracts(comments);
247
- }
@@ -1,154 +0,0 @@
1
- import type { AsmInstructionNode, SourceSpan } from '../frontend/ast.js';
2
- export type RegisterCareMode = 'off' | 'audit' | 'warn' | 'error' | 'strict';
3
- export type RegisterCareUnit = 'A' | 'B' | 'C' | 'D' | 'E' | 'H' | 'L' | 'IXH' | 'IXL' | 'IYH' | 'IYL' | 'SPH' | 'SPL' | 'carry' | 'zero' | 'sign' | 'parity' | 'halfCarry';
4
- type StackEffect = {
5
- kind: 'none';
6
- } | {
7
- kind: 'push';
8
- units: RegisterCareUnit[];
9
- } | {
10
- kind: 'pop';
11
- units: RegisterCareUnit[];
12
- } | {
13
- kind: 'exchangeTop';
14
- units: RegisterCareUnit[];
15
- } | {
16
- kind: 'unknown';
17
- };
18
- export type ControlEffect = {
19
- kind: 'fallthrough';
20
- } | {
21
- kind: 'call';
22
- target?: string;
23
- conditional: boolean;
24
- } | {
25
- kind: 'rst';
26
- vector?: number;
27
- } | {
28
- kind: 'return';
29
- } | {
30
- kind: 'jump';
31
- target?: string;
32
- conditional: boolean;
33
- } | {
34
- kind: 'unknown';
35
- };
36
- export interface InstructionEffect {
37
- reads: RegisterCareUnit[];
38
- writes: RegisterCareUnit[];
39
- stack: StackEffect;
40
- control: ControlEffect;
41
- }
42
- export type SmartComment = {
43
- kind: 'extern';
44
- name: string;
45
- } | {
46
- kind: 'end';
47
- } | {
48
- kind: 'in';
49
- carriers: RegisterCareUnit[];
50
- name?: string;
51
- } | {
52
- kind: 'out';
53
- carriers: RegisterCareUnit[];
54
- name?: string;
55
- } | {
56
- kind: 'clobbers';
57
- carriers: RegisterCareUnit[];
58
- } | {
59
- kind: 'preserves';
60
- carriers: RegisterCareUnit[];
61
- } | {
62
- kind: 'expectOut';
63
- carriers: RegisterCareUnit[];
64
- name?: string;
65
- };
66
- export interface LocatedSmartComment {
67
- file: string;
68
- line: number;
69
- comment: SmartComment;
70
- }
71
- export interface RoutineContract {
72
- name: string;
73
- in: RegisterCareUnit[];
74
- out: RegisterCareUnit[];
75
- clobbers: RegisterCareUnit[];
76
- preserves: RegisterCareUnit[];
77
- complete?: boolean;
78
- }
79
- export interface RegisterCareInstruction {
80
- instruction: AsmInstructionNode;
81
- head: string;
82
- file: string;
83
- line: number;
84
- column: number;
85
- labels: string[];
86
- }
87
- export interface RegisterCareRoutine {
88
- name: string;
89
- span: SourceSpan;
90
- labels: string[];
91
- entryLabels?: string[];
92
- instructions: RegisterCareInstruction[];
93
- }
94
- export interface RegisterCareDirectCall {
95
- target: string;
96
- subject: string;
97
- file: string;
98
- line: number;
99
- column: number;
100
- }
101
- export interface RegisterCareProgramModel {
102
- routines: RegisterCareRoutine[];
103
- directCallTargets: string[];
104
- directCalls: RegisterCareDirectCall[];
105
- directBoundaries: RegisterCareDirectCall[];
106
- }
107
- export interface ValueRelation {
108
- out: RegisterCareUnit[];
109
- from: RegisterCareUnit[];
110
- }
111
- export interface RoutineSummary {
112
- name: string;
113
- mayRead: RegisterCareUnit[];
114
- mayWrite: RegisterCareUnit[];
115
- preserved: RegisterCareUnit[];
116
- valueRelations: ValueRelation[];
117
- outputCandidates?: RegisterCareUnit[];
118
- stackBalanced: boolean;
119
- hasUnknownStackEffect: boolean;
120
- }
121
- export interface RegisterCareConflict {
122
- file: string;
123
- line: number;
124
- column: number;
125
- callTarget: string;
126
- carriers: RegisterCareUnit[];
127
- message: string;
128
- }
129
- export interface RegisterCareUnknownBoundary {
130
- file: string;
131
- line: number;
132
- column: number;
133
- target: string;
134
- message: string;
135
- }
136
- export interface RegisterCareOutputCandidate {
137
- file: string;
138
- line: number;
139
- column: number;
140
- routine: string;
141
- carriers: RegisterCareUnit[];
142
- autoFixable?: boolean;
143
- message: string;
144
- }
145
- export interface RegisterCareReportModel {
146
- entryFile: string;
147
- mode: RegisterCareMode;
148
- profile?: string;
149
- summaries: RoutineSummary[];
150
- conflicts: RegisterCareConflict[];
151
- outputCandidates?: RegisterCareOutputCandidate[];
152
- unknownCalls: string[];
153
- }
154
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,5 +0,0 @@
1
- import type { SourceItemNode } from '../frontend/ast.js';
2
- type DeclNode = SourceItemNode;
3
- type DeclVisitContext = Record<string, never>;
4
- export declare function visitDeclTree(items: SourceItemNode[], visit: (item: DeclNode, ctx: DeclVisitContext) => void): void;
5
- export {};
@@ -1,11 +0,0 @@
1
- export function visitDeclTree(items, visit) {
2
- const walkEntry = (entry, ctx) => {
3
- if (entry.kind === 'AsmLabel' || entry.kind === 'AsmInstruction') {
4
- return;
5
- }
6
- visit(entry, ctx);
7
- };
8
- for (const item of items) {
9
- walkEntry(item, {});
10
- }
11
- }
@@ -1,28 +0,0 @@
1
- import type { Diagnostic } from '../diagnosticTypes.js';
2
- import type { ImmExprNode, ProgramNode, TypeDeclNode, UnionDeclNode } from '../frontend/ast.js';
3
- export interface CompileEnv {
4
- /**
5
- * Map of equate name -> evaluated numeric value.
6
- *
7
- * Values are plain JavaScript numbers; interpretation (imm8/imm16 wrapping, etc.) happens at use sites.
8
- */
9
- equates: Map<string, number>;
10
- /**
11
- * Map of enum member name -> evaluated numeric value.
12
- */
13
- enums: Map<string, number>;
14
- /**
15
- * Map of type name -> type declaration.
16
- *
17
- * Layout declarations used by sizeof/offset and layout casts.
18
- */
19
- types: Map<string, TypeDeclNode | UnionDeclNode>;
20
- asmEquExprs?: Map<string, {
21
- expr: ImmExprNode;
22
- currentLocation?: number;
23
- }>;
24
- }
25
- export declare function evalImmExpr(expr: ImmExprNode, env: CompileEnv, diagnostics?: Diagnostic[], options?: {
26
- currentLocation?: number;
27
- }): number | undefined;
28
- export declare function buildEnv(program: ProgramNode, diagnostics: Diagnostic[]): CompileEnv;