@jhlagado/azm 0.2.1 → 0.2.3

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 (313) hide show
  1. package/README.md +16 -9
  2. package/dist/src/api-compile.d.ts +0 -2
  3. package/dist/src/api-compile.js +1 -8
  4. package/dist/src/assembly/address-planning.js +19 -1
  5. package/dist/src/cli/parse-args.d.ts +0 -1
  6. package/dist/src/cli/parse-args.js +0 -7
  7. package/dist/src/cli/write-artifacts.js +0 -11
  8. package/dist/src/core/compile.js +176 -9
  9. package/dist/src/expansion/op-expansion.js +1 -0
  10. package/dist/src/model/expression.d.ts +4 -0
  11. package/dist/src/model/source-item.d.ts +5 -0
  12. package/dist/src/outputs/index.js +0 -2
  13. package/dist/src/outputs/types.d.ts +3 -16
  14. package/dist/src/outputs/write-asm80.js +84 -0
  15. package/dist/src/semantics/expression-evaluation.d.ts +7 -3
  16. package/dist/src/semantics/expression-evaluation.js +57 -0
  17. package/dist/src/syntax/directive-aliases.js +9 -10
  18. package/dist/src/syntax/parse-expression.js +34 -9
  19. package/dist/src/syntax/parse-line.js +80 -44
  20. package/dist/src/tooling/case-style.js +3 -0
  21. package/docs/reference/cli.md +6 -4
  22. package/docs/reference/tooling-api.md +1 -4
  23. package/package.json +2 -6
  24. package/dist/legacy-root-azm/src/analysis.d.ts +0 -11
  25. package/dist/legacy-root-azm/src/analysis.js +0 -41
  26. package/dist/legacy-root-azm/src/compile.d.ts +0 -10
  27. package/dist/legacy-root-azm/src/compile.js +0 -186
  28. package/dist/legacy-root-azm/src/compileShared.d.ts +0 -3
  29. package/dist/legacy-root-azm/src/compileShared.js +0 -7
  30. package/dist/legacy-root-azm/src/diagnosticTypes.d.ts +0 -77
  31. package/dist/legacy-root-azm/src/diagnosticTypes.js +0 -53
  32. package/dist/legacy-root-azm/src/formats/index.d.ts +0 -7
  33. package/dist/legacy-root-azm/src/formats/index.js +0 -17
  34. package/dist/legacy-root-azm/src/formats/range.d.ts +0 -17
  35. package/dist/legacy-root-azm/src/formats/range.js +0 -45
  36. package/dist/legacy-root-azm/src/formats/types.d.ts +0 -283
  37. package/dist/legacy-root-azm/src/formats/types.js +0 -1
  38. package/dist/legacy-root-azm/src/formats/writeAsm80.d.ts +0 -6
  39. package/dist/legacy-root-azm/src/formats/writeAsm80.js +0 -86
  40. package/dist/legacy-root-azm/src/formats/writeBin.d.ts +0 -7
  41. package/dist/legacy-root-azm/src/formats/writeBin.js +0 -23
  42. package/dist/legacy-root-azm/src/formats/writeD8m.d.ts +0 -9
  43. package/dist/legacy-root-azm/src/formats/writeD8m.js +0 -245
  44. package/dist/legacy-root-azm/src/formats/writeHex.d.ts +0 -8
  45. package/dist/legacy-root-azm/src/formats/writeHex.js +0 -38
  46. package/dist/legacy-root-azm/src/formats/writeListing.d.ts +0 -8
  47. package/dist/legacy-root-azm/src/formats/writeListing.js +0 -83
  48. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.d.ts +0 -39
  49. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.js +0 -89
  50. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.d.ts +0 -4
  51. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.js +0 -94
  52. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.d.ts +0 -10
  53. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.js +0 -25
  54. package/dist/legacy-root-azm/src/frontend/ast.d.ts +0 -376
  55. package/dist/legacy-root-azm/src/frontend/ast.js +0 -1
  56. package/dist/legacy-root-azm/src/frontend/directiveAliases.d.ts +0 -14
  57. package/dist/legacy-root-azm/src/frontend/directiveAliases.js +0 -189
  58. package/dist/legacy-root-azm/src/frontend/grammarData.d.ts +0 -14
  59. package/dist/legacy-root-azm/src/frontend/grammarData.js +0 -65
  60. package/dist/legacy-root-azm/src/frontend/immExprUtils.d.ts +0 -2
  61. package/dist/legacy-root-azm/src/frontend/immExprUtils.js +0 -12
  62. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.d.ts +0 -17
  63. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.js +0 -187
  64. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.d.ts +0 -3
  65. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.js +0 -73
  66. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.d.ts +0 -6
  67. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.js +0 -16
  68. package/dist/legacy-root-azm/src/frontend/parseAsmStream.d.ts +0 -10
  69. package/dist/legacy-root-azm/src/frontend/parseAsmStream.js +0 -33
  70. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.d.ts +0 -18
  71. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.js +0 -34
  72. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.d.ts +0 -9
  73. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.js +0 -16
  74. package/dist/legacy-root-azm/src/frontend/parseEnum.d.ts +0 -12
  75. package/dist/legacy-root-azm/src/frontend/parseEnum.js +0 -70
  76. package/dist/legacy-root-azm/src/frontend/parseImm.d.ts +0 -10
  77. package/dist/legacy-root-azm/src/frontend/parseImm.js +0 -397
  78. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.d.ts +0 -11
  79. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.js +0 -94
  80. package/dist/legacy-root-azm/src/frontend/parseOp.d.ts +0 -25
  81. package/dist/legacy-root-azm/src/frontend/parseOp.js +0 -120
  82. package/dist/legacy-root-azm/src/frontend/parseOpHeader.d.ts +0 -20
  83. package/dist/legacy-root-azm/src/frontend/parseOpHeader.js +0 -32
  84. package/dist/legacy-root-azm/src/frontend/parseOperands.d.ts +0 -4
  85. package/dist/legacy-root-azm/src/frontend/parseOperands.js +0 -290
  86. package/dist/legacy-root-azm/src/frontend/parseParams.d.ts +0 -6
  87. package/dist/legacy-root-azm/src/frontend/parseParams.js +0 -62
  88. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.d.ts +0 -12
  89. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.js +0 -17
  90. package/dist/legacy-root-azm/src/frontend/parseParserShared.d.ts +0 -2
  91. package/dist/legacy-root-azm/src/frontend/parseParserShared.js +0 -8
  92. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.d.ts +0 -1
  93. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.js +0 -3
  94. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.d.ts +0 -7
  95. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.js +0 -142
  96. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.d.ts +0 -34
  97. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.js +0 -177
  98. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.d.ts +0 -46
  99. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.js +0 -53
  100. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.d.ts +0 -16
  101. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.js +0 -68
  102. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.d.ts +0 -11
  103. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.js +0 -50
  104. package/dist/legacy-root-azm/src/frontend/parseTypes.d.ts +0 -24
  105. package/dist/legacy-root-azm/src/frontend/parseTypes.js +0 -77
  106. package/dist/legacy-root-azm/src/frontend/parser.d.ts +0 -11
  107. package/dist/legacy-root-azm/src/frontend/parser.js +0 -88
  108. package/dist/legacy-root-azm/src/frontend/source.d.ts +0 -28
  109. package/dist/legacy-root-azm/src/frontend/source.js +0 -58
  110. package/dist/legacy-root-azm/src/frontend/sourceExtensions.d.ts +0 -2
  111. package/dist/legacy-root-azm/src/frontend/sourceExtensions.js +0 -6
  112. package/dist/legacy-root-azm/src/lintCaseStyle.d.ts +0 -4
  113. package/dist/legacy-root-azm/src/lintCaseStyle.js +0 -129
  114. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.d.ts +0 -4
  115. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.js +0 -229
  116. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.d.ts +0 -47
  117. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.js +0 -52
  118. package/dist/legacy-root-azm/src/lowering/asmEquResolution.d.ts +0 -8
  119. package/dist/legacy-root-azm/src/lowering/asmEquResolution.js +0 -69
  120. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.d.ts +0 -15
  121. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.js +0 -102
  122. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.d.ts +0 -5
  123. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.js +0 -54
  124. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.d.ts +0 -46
  125. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.js +0 -51
  126. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.d.ts +0 -43
  127. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.js +0 -254
  128. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.d.ts +0 -23
  129. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.js +0 -1
  130. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.d.ts +0 -28
  131. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.js +0 -144
  132. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.d.ts +0 -17
  133. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.js +0 -39
  134. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.d.ts +0 -16
  135. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.js +0 -209
  136. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.d.ts +0 -4
  137. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.js +0 -9
  138. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.d.ts +0 -4
  139. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.js +0 -14
  140. package/dist/legacy-root-azm/src/lowering/asmUtils.d.ts +0 -13
  141. package/dist/legacy-root-azm/src/lowering/asmUtils.js +0 -105
  142. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.d.ts +0 -54
  143. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.js +0 -128
  144. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.d.ts +0 -151
  145. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.js +0 -16
  146. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.d.ts +0 -7
  147. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.js +0 -75
  148. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.d.ts +0 -66
  149. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.js +0 -166
  150. package/dist/legacy-root-azm/src/lowering/bytePlacement.d.ts +0 -7
  151. package/dist/legacy-root-azm/src/lowering/bytePlacement.js +0 -37
  152. package/dist/legacy-root-azm/src/lowering/capabilities.d.ts +0 -67
  153. package/dist/legacy-root-azm/src/lowering/capabilities.js +0 -1
  154. package/dist/legacy-root-azm/src/lowering/eaResolution.d.ts +0 -58
  155. package/dist/legacy-root-azm/src/lowering/eaResolution.js +0 -159
  156. package/dist/legacy-root-azm/src/lowering/emissionCore.d.ts +0 -17
  157. package/dist/legacy-root-azm/src/lowering/emissionCore.js +0 -21
  158. package/dist/legacy-root-azm/src/lowering/emit.d.ts +0 -17
  159. package/dist/legacy-root-azm/src/lowering/emit.js +0 -46
  160. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.d.ts +0 -63
  161. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.js +0 -41
  162. package/dist/legacy-root-azm/src/lowering/emitFinalization.d.ts +0 -61
  163. package/dist/legacy-root-azm/src/lowering/emitFinalization.js +0 -66
  164. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.d.ts +0 -19
  165. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.js +0 -26
  166. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -7
  167. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.js +0 -119
  168. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.d.ts +0 -4
  169. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.js +0 -12
  170. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.d.ts +0 -21
  171. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.js +0 -1
  172. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.d.ts +0 -70
  173. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.js +0 -203
  174. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.d.ts +0 -82
  175. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.js +0 -55
  176. package/dist/legacy-root-azm/src/lowering/emitPipeline.d.ts +0 -121
  177. package/dist/legacy-root-azm/src/lowering/emitPipeline.js +0 -57
  178. package/dist/legacy-root-azm/src/lowering/emitProgramContext.d.ts +0 -39
  179. package/dist/legacy-root-azm/src/lowering/emitProgramContext.js +0 -29
  180. package/dist/legacy-root-azm/src/lowering/emitState.d.ts +0 -90
  181. package/dist/legacy-root-azm/src/lowering/emitState.js +0 -124
  182. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.d.ts +0 -7
  183. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.js +0 -23
  184. package/dist/legacy-root-azm/src/lowering/fixupEmission.d.ts +0 -64
  185. package/dist/legacy-root-azm/src/lowering/fixupEmission.js +0 -199
  186. package/dist/legacy-root-azm/src/lowering/immMath.d.ts +0 -2
  187. package/dist/legacy-root-azm/src/lowering/immMath.js +0 -34
  188. package/dist/legacy-root-azm/src/lowering/inputAssets.d.ts +0 -7
  189. package/dist/legacy-root-azm/src/lowering/inputAssets.js +0 -106
  190. package/dist/legacy-root-azm/src/lowering/ldEncoding.d.ts +0 -15
  191. package/dist/legacy-root-azm/src/lowering/ldEncoding.js +0 -12
  192. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.d.ts +0 -5
  193. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.js +0 -124
  194. package/dist/legacy-root-azm/src/lowering/ldFormSelection.d.ts +0 -26
  195. package/dist/legacy-root-azm/src/lowering/ldFormSelection.js +0 -92
  196. package/dist/legacy-root-azm/src/lowering/ldLowering.d.ts +0 -7
  197. package/dist/legacy-root-azm/src/lowering/ldLowering.js +0 -13
  198. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.d.ts +0 -23
  199. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.js +0 -185
  200. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.d.ts +0 -13
  201. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.js +0 -86
  202. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.d.ts +0 -27
  203. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.js +0 -215
  204. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.d.ts +0 -202
  205. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.js +0 -1
  206. package/dist/legacy-root-azm/src/lowering/loweredFormat.d.ts +0 -3
  207. package/dist/legacy-root-azm/src/lowering/loweredFormat.js +0 -26
  208. package/dist/legacy-root-azm/src/lowering/loweredItemSize.d.ts +0 -4
  209. package/dist/legacy-root-azm/src/lowering/loweredItemSize.js +0 -17
  210. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.d.ts +0 -9
  211. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.js +0 -55
  212. package/dist/legacy-root-azm/src/lowering/loweringTypes.d.ts +0 -27
  213. package/dist/legacy-root-azm/src/lowering/loweringTypes.js +0 -1
  214. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.d.ts +0 -9
  215. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.js +0 -9
  216. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.d.ts +0 -15
  217. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.js +0 -45
  218. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.d.ts +0 -15
  219. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.js +0 -88
  220. package/dist/legacy-root-azm/src/lowering/opExpansionStream.d.ts +0 -12
  221. package/dist/legacy-root-azm/src/lowering/opExpansionStream.js +0 -176
  222. package/dist/legacy-root-azm/src/lowering/opMatching.d.ts +0 -52
  223. package/dist/legacy-root-azm/src/lowering/opMatching.js +0 -355
  224. package/dist/legacy-root-azm/src/lowering/opSubstitution.d.ts +0 -13
  225. package/dist/legacy-root-azm/src/lowering/opSubstitution.js +0 -175
  226. package/dist/legacy-root-azm/src/lowering/prescanTypes.d.ts +0 -7
  227. package/dist/legacy-root-azm/src/lowering/prescanTypes.js +0 -1
  228. package/dist/legacy-root-azm/src/lowering/programLowering.d.ts +0 -144
  229. package/dist/legacy-root-azm/src/lowering/programLowering.js +0 -2
  230. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.d.ts +0 -5
  231. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.js +0 -5
  232. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.d.ts +0 -18
  233. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.js +0 -115
  234. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.d.ts +0 -2
  235. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.js +0 -93
  236. package/dist/legacy-root-azm/src/lowering/programPrescan.d.ts +0 -3
  237. package/dist/legacy-root-azm/src/lowering/programPrescan.js +0 -37
  238. package/dist/legacy-root-azm/src/lowering/traceFormat.d.ts +0 -13
  239. package/dist/legacy-root-azm/src/lowering/traceFormat.js +0 -211
  240. package/dist/legacy-root-azm/src/packageInfo.d.ts +0 -1
  241. package/dist/legacy-root-azm/src/packageInfo.js +0 -15
  242. package/dist/legacy-root-azm/src/pathCompare.d.ts +0 -3
  243. package/dist/legacy-root-azm/src/pathCompare.js +0 -26
  244. package/dist/legacy-root-azm/src/pipeline.d.ts +0 -91
  245. package/dist/legacy-root-azm/src/pipeline.js +0 -1
  246. package/dist/legacy-root-azm/src/registerCare/analyze.d.ts +0 -24
  247. package/dist/legacy-root-azm/src/registerCare/analyze.js +0 -327
  248. package/dist/legacy-root-azm/src/registerCare/annotate.d.ts +0 -11
  249. package/dist/legacy-root-azm/src/registerCare/annotate.js +0 -76
  250. package/dist/legacy-root-azm/src/registerCare/boundaryHints.d.ts +0 -2
  251. package/dist/legacy-root-azm/src/registerCare/boundaryHints.js +0 -10
  252. package/dist/legacy-root-azm/src/registerCare/carriers.d.ts +0 -4
  253. package/dist/legacy-root-azm/src/registerCare/carriers.js +0 -78
  254. package/dist/legacy-root-azm/src/registerCare/controlFlow.d.ts +0 -5
  255. package/dist/legacy-root-azm/src/registerCare/controlFlow.js +0 -35
  256. package/dist/legacy-root-azm/src/registerCare/fix.d.ts +0 -11
  257. package/dist/legacy-root-azm/src/registerCare/fix.js +0 -119
  258. package/dist/legacy-root-azm/src/registerCare/liveness.d.ts +0 -7
  259. package/dist/legacy-root-azm/src/registerCare/liveness.js +0 -227
  260. package/dist/legacy-root-azm/src/registerCare/profiles.d.ts +0 -11
  261. package/dist/legacy-root-azm/src/registerCare/profiles.js +0 -45
  262. package/dist/legacy-root-azm/src/registerCare/programModel.d.ts +0 -3
  263. package/dist/legacy-root-azm/src/registerCare/programModel.js +0 -181
  264. package/dist/legacy-root-azm/src/registerCare/report.d.ts +0 -5
  265. package/dist/legacy-root-azm/src/registerCare/report.js +0 -139
  266. package/dist/legacy-root-azm/src/registerCare/smartComments.d.ts +0 -5
  267. package/dist/legacy-root-azm/src/registerCare/smartComments.js +0 -247
  268. package/dist/legacy-root-azm/src/registerCare/sourceText.d.ts +0 -8
  269. package/dist/legacy-root-azm/src/registerCare/sourceText.js +0 -15
  270. package/dist/legacy-root-azm/src/registerCare/summary.d.ts +0 -3
  271. package/dist/legacy-root-azm/src/registerCare/summary.js +0 -492
  272. package/dist/legacy-root-azm/src/registerCare/types.d.ts +0 -154
  273. package/dist/legacy-root-azm/src/registerCare/types.js +0 -1
  274. package/dist/legacy-root-azm/src/semantics/declVisitor.d.ts +0 -5
  275. package/dist/legacy-root-azm/src/semantics/declVisitor.js +0 -11
  276. package/dist/legacy-root-azm/src/semantics/env.d.ts +0 -28
  277. package/dist/legacy-root-azm/src/semantics/env.js +0 -432
  278. package/dist/legacy-root-azm/src/semantics/layout.d.ts +0 -21
  279. package/dist/legacy-root-azm/src/semantics/layout.js +0 -226
  280. package/dist/legacy-root-azm/src/semantics/layoutCastFold.d.ts +0 -22
  281. package/dist/legacy-root-azm/src/semantics/layoutCastFold.js +0 -118
  282. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.d.ts +0 -2
  283. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.js +0 -4
  284. package/dist/legacy-root-azm/src/semantics/typeQueries.d.ts +0 -31
  285. package/dist/legacy-root-azm/src/semantics/typeQueries.js +0 -124
  286. package/dist/legacy-root-azm/src/sourceIncludeExpansion.d.ts +0 -17
  287. package/dist/legacy-root-azm/src/sourceIncludeExpansion.js +0 -124
  288. package/dist/legacy-root-azm/src/sourceIncludePaths.d.ts +0 -1
  289. package/dist/legacy-root-azm/src/sourceIncludePaths.js +0 -12
  290. package/dist/legacy-root-azm/src/sourceLoader.d.ts +0 -15
  291. package/dist/legacy-root-azm/src/sourceLoader.js +0 -118
  292. package/dist/legacy-root-azm/src/z80/effects.d.ts +0 -3
  293. package/dist/legacy-root-azm/src/z80/effects.js +0 -516
  294. package/dist/legacy-root-azm/src/z80/encode.d.ts +0 -10
  295. package/dist/legacy-root-azm/src/z80/encode.js +0 -412
  296. package/dist/legacy-root-azm/src/z80/encodeAlu.d.ts +0 -7
  297. package/dist/legacy-root-azm/src/z80/encodeAlu.js +0 -219
  298. package/dist/legacy-root-azm/src/z80/encodeBitOps.d.ts +0 -7
  299. package/dist/legacy-root-azm/src/z80/encodeBitOps.js +0 -123
  300. package/dist/legacy-root-azm/src/z80/encodeContext.d.ts +0 -29
  301. package/dist/legacy-root-azm/src/z80/encodeContext.js +0 -1
  302. package/dist/legacy-root-azm/src/z80/encodeControl.d.ts +0 -26
  303. package/dist/legacy-root-azm/src/z80/encodeControl.js +0 -180
  304. package/dist/legacy-root-azm/src/z80/encodeCoreOps.d.ts +0 -7
  305. package/dist/legacy-root-azm/src/z80/encodeCoreOps.js +0 -131
  306. package/dist/legacy-root-azm/src/z80/encodeIo.d.ts +0 -9
  307. package/dist/legacy-root-azm/src/z80/encodeIo.js +0 -128
  308. package/dist/legacy-root-azm/src/z80/encodeLd.d.ts +0 -13
  309. package/dist/legacy-root-azm/src/z80/encodeLd.js +0 -273
  310. package/dist/legacy-root-azm/src/z80/encoderRegistry.d.ts +0 -13
  311. package/dist/legacy-root-azm/src/z80/encoderRegistry.js +0 -169
  312. package/dist/src/outputs/write-listing.d.ts +0 -2
  313. package/dist/src/outputs/write-listing.js +0 -79
@@ -1,202 +0,0 @@
1
- import type { PlacementKind } from './loweringTypes.js';
2
- export type LoweredAsmStream = {
3
- /** Ordered blocks as emitted during lowering (pre-placement). */
4
- blocks: LoweredAsmStreamBlock[];
5
- };
6
- export type LoweredAsmStreamBlock = {
7
- /** Base placement chunk. */
8
- kind: 'base';
9
- /** Which logical placement this block belongs to. */
10
- placement: PlacementKind;
11
- /** Lowered items in emission order. */
12
- items: LoweredAsmItem[];
13
- };
14
- export type LoweredAsmProgram = {
15
- /** Blocks with assigned origins after placement. */
16
- blocks: LoweredAsmBlock[];
17
- /** Optional symbol table snapshot for listings. */
18
- symbols?: LoweredAsmSymbol[];
19
- };
20
- export type LoweredAsmBlock = {
21
- /** Placement-relative block vs absolute-origin blob. */
22
- kind: 'placed' | 'absolute';
23
- /** Base address for this block’s bytes. */
24
- origin: number;
25
- /** Code/data placement when `kind === 'placed'`. */
26
- placement?: PlacementKind;
27
- /** Lowered items. */
28
- items: LoweredAsmItem[];
29
- };
30
- type LoweredAsmSymbol = {
31
- /** Compile-time named constant. */
32
- kind: 'constant';
33
- /** Constant identifier text. */
34
- name: string;
35
- /** Folded imm expression. */
36
- value: LoweredImmExpr;
37
- } | {
38
- /** Runtime label or reserved-data symbol. */
39
- kind: 'label' | 'data' | 'unknown';
40
- /** Symbol name. */
41
- name: string;
42
- /** Address expression (may reference other symbols). */
43
- address: LoweredImmExpr;
44
- };
45
- export type LoweredAsmItem = {
46
- kind: 'label';
47
- /** Label name for this position. */
48
- name: string;
49
- } | {
50
- kind: 'const';
51
- /** Const name. */
52
- name: string;
53
- /** Const value expression. */
54
- value: LoweredImmExpr;
55
- } | {
56
- kind: 'db';
57
- /** Byte values. */
58
- values: LoweredImmExpr[];
59
- } | {
60
- kind: 'dw';
61
- /** Word values. */
62
- values: LoweredImmExpr[];
63
- } | {
64
- kind: 'ds';
65
- /** Reserve size in bytes. */
66
- size: LoweredImmExpr;
67
- /** Optional fill byte; omit for undefined fill. */
68
- fill?: LoweredImmExpr;
69
- } | {
70
- kind: 'instr';
71
- /** Mnemonic head token. */
72
- head: string;
73
- /** Rendered operands. */
74
- operands: LoweredOperand[];
75
- /** Encoded bytes when available; omit before encoding. */
76
- bytes?: number[];
77
- } | {
78
- kind: 'comment';
79
- /** Comment text. */
80
- text: string;
81
- /** User source comment vs compiler-generated trace. */
82
- origin: 'user' | 'generated';
83
- };
84
- export type LoweredOperand = {
85
- kind: 'reg';
86
- /** Canonical register name. */
87
- name: string;
88
- } | {
89
- kind: 'imm';
90
- /** Immediate subexpression. */
91
- expr: LoweredImmExpr;
92
- } | {
93
- kind: 'mem';
94
- /** Memory EA expression. */
95
- expr: LoweredEaExpr;
96
- } | {
97
- kind: 'ea';
98
- /** Standalone EA operand. */
99
- expr: LoweredEaExpr;
100
- } | {
101
- kind: 'portImm8';
102
- /** 8-bit port immediate. */
103
- expr: LoweredImmExpr;
104
- } | {
105
- /** `(C)` port form. */
106
- kind: 'portC';
107
- };
108
- export type LoweredImmExpr = {
109
- kind: 'literal';
110
- /** Numeric literal value. */
111
- value: number;
112
- } | {
113
- kind: 'symbol';
114
- /** Symbol name (may be address-bearing). */
115
- name: string;
116
- /** Byte offset added to the symbol’s value. */
117
- addend: number;
118
- } | {
119
- kind: 'unary';
120
- /** Unary operator. */
121
- op: '+' | '-' | '~';
122
- /** Inner expression. */
123
- expr: LoweredImmExpr;
124
- } | {
125
- kind: 'binary';
126
- /** Binary operator. */
127
- op: '*' | '/' | '%' | '+' | '-' | '&' | '^' | '|' | '<<' | '>>';
128
- /** Left operand. */
129
- left: LoweredImmExpr;
130
- /** Right operand. */
131
- right: LoweredImmExpr;
132
- } | {
133
- kind: 'opaque';
134
- /** Unparsed / passthrough text for listing. */
135
- text: string;
136
- };
137
- export type LoweredEaExpr = {
138
- kind: 'name';
139
- /** Identifier in an EA. */
140
- name: string;
141
- } | {
142
- kind: 'imm';
143
- /** Nested immediate. */
144
- expr: LoweredImmExpr;
145
- } | {
146
- kind: 'layoutCast';
147
- /** Target type name for the layout cast. */
148
- typeName: string;
149
- /** Base EA. */
150
- base: LoweredEaExpr;
151
- } | {
152
- kind: 'field';
153
- /** Record/union base. */
154
- base: LoweredEaExpr;
155
- /** Field name. */
156
- field: string;
157
- } | {
158
- kind: 'index';
159
- /** Array base. */
160
- base: LoweredEaExpr;
161
- /** Index selector. */
162
- index: LoweredIndexExpr;
163
- } | {
164
- kind: 'add';
165
- /** Base EA. */
166
- base: LoweredEaExpr;
167
- /** Positive offset imm. */
168
- offset: LoweredImmExpr;
169
- } | {
170
- kind: 'sub';
171
- /** Base EA. */
172
- base: LoweredEaExpr;
173
- /** Subtracted offset imm. */
174
- offset: LoweredImmExpr;
175
- };
176
- export type LoweredIndexExpr = {
177
- kind: 'imm';
178
- /** Constant index expression. */
179
- value: LoweredImmExpr;
180
- } | {
181
- kind: 'reg8';
182
- /** 8-bit index register name. */
183
- reg: string;
184
- } | {
185
- kind: 'reg16';
186
- /** 16-bit index register name. */
187
- reg: string;
188
- } | {
189
- /** `(HL)` addressing form. */
190
- kind: 'memHL';
191
- } | {
192
- kind: 'memIxIy';
193
- /** Which index register. */
194
- base: 'IX' | 'IY';
195
- /** Displacement; omit for 0. */
196
- disp?: LoweredImmExpr;
197
- } | {
198
- kind: 'ea';
199
- /** General EA used as index. */
200
- expr: LoweredEaExpr;
201
- };
202
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- import type { LoweredImmExpr } from './loweredAsmTypes.js';
2
- export declare const formatLoweredNumber: (value: number) => string;
3
- export declare function formatLoweredImmExpr(expr: LoweredImmExpr): string;
@@ -1,26 +0,0 @@
1
- const toHex = (value, width) => value.toString(16).toUpperCase().padStart(width, '0');
2
- export const formatLoweredNumber = (value) => {
3
- if (value < 0) {
4
- const abs = Math.abs(value);
5
- return `-$${toHex(abs, abs > 0xff ? 4 : 2)}`;
6
- }
7
- return `$${toHex(value, value > 0xff ? 4 : 2)}`;
8
- };
9
- export function formatLoweredImmExpr(expr) {
10
- switch (expr.kind) {
11
- case 'literal':
12
- return formatLoweredNumber(expr.value);
13
- case 'symbol': {
14
- if (expr.addend === 0)
15
- return expr.name;
16
- const addend = formatLoweredNumber(Math.abs(expr.addend));
17
- return expr.addend > 0 ? `${expr.name}+${addend}` : `${expr.name}-${addend}`;
18
- }
19
- case 'unary':
20
- return `${expr.op}${formatLoweredImmExpr(expr.expr)}`;
21
- case 'binary':
22
- return `(${formatLoweredImmExpr(expr.left)} ${expr.op} ${formatLoweredImmExpr(expr.right)})`;
23
- case 'opaque':
24
- return expr.text;
25
- }
26
- }
@@ -1,4 +0,0 @@
1
- import type { LoweredAsmItem, LoweredImmExpr } from './loweredAsmTypes.js';
2
- type LoweredSizeEvaluator = (expr: LoweredImmExpr) => number | undefined;
3
- export declare function loweredItemSize(item: LoweredAsmItem, evalSize?: LoweredSizeEvaluator): number;
4
- export {};
@@ -1,17 +0,0 @@
1
- const literalSize = (expr) => expr.kind === 'literal' ? expr.value : undefined;
2
- export function loweredItemSize(item, evalSize = literalSize) {
3
- switch (item.kind) {
4
- case 'label':
5
- case 'const':
6
- case 'comment':
7
- return 0;
8
- case 'db':
9
- return item.values.length;
10
- case 'dw':
11
- return item.values.length * 2;
12
- case 'ds':
13
- return Math.max(0, evalSize(item.size) ?? 0);
14
- case 'instr':
15
- return item.bytes?.length ?? 0;
16
- }
17
- }
@@ -1,9 +0,0 @@
1
- import type { Diagnostic, DiagnosticId } from '../diagnosticTypes.js';
2
- import type { SourceSpan } from '../frontend/ast.js';
3
- export declare function diag(diagnostics: Diagnostic[], file: string, message: string): void;
4
- /** Encoder-time diagnostic with stable {@link DiagnosticIds.EncodeError} id and source span. */
5
- export declare function diagEncodeAt(diagnostics: Diagnostic[], span: SourceSpan, message: string): void;
6
- export declare function diagAt(diagnostics: Diagnostic[], span: SourceSpan, message: string): void;
7
- export declare function diagAtWithId(diagnostics: Diagnostic[], span: SourceSpan, id: DiagnosticId, message: string): void;
8
- export declare function diagAtWithSeverityAndId(diagnostics: Diagnostic[], span: SourceSpan, id: DiagnosticId, severity: 'error' | 'warning', message: string): void;
9
- export declare function warnAt(diagnostics: Diagnostic[], span: SourceSpan, message: string): void;
@@ -1,55 +0,0 @@
1
- import { DiagnosticIds } from '../diagnosticTypes.js';
2
- export function diag(diagnostics, file, message) {
3
- diagnostics.push({ id: DiagnosticIds.EmitError, severity: 'error', message, file });
4
- }
5
- /** Encoder-time diagnostic with stable {@link DiagnosticIds.EncodeError} id and source span. */
6
- export function diagEncodeAt(diagnostics, span, message) {
7
- diagnostics.push({
8
- id: DiagnosticIds.EncodeError,
9
- severity: 'error',
10
- message,
11
- file: span.file,
12
- line: span.start.line,
13
- column: span.start.column,
14
- });
15
- }
16
- export function diagAt(diagnostics, span, message) {
17
- diagnostics.push({
18
- id: DiagnosticIds.EmitError,
19
- severity: 'error',
20
- message,
21
- file: span.file,
22
- line: span.start.line,
23
- column: span.start.column,
24
- });
25
- }
26
- export function diagAtWithId(diagnostics, span, id, message) {
27
- diagnostics.push({
28
- id,
29
- severity: 'error',
30
- message,
31
- file: span.file,
32
- line: span.start.line,
33
- column: span.start.column,
34
- });
35
- }
36
- export function diagAtWithSeverityAndId(diagnostics, span, id, severity, message) {
37
- diagnostics.push({
38
- id,
39
- severity,
40
- message,
41
- file: span.file,
42
- line: span.start.line,
43
- column: span.start.column,
44
- });
45
- }
46
- export function warnAt(diagnostics, span, message) {
47
- diagnostics.push({
48
- id: DiagnosticIds.EmitWarning,
49
- severity: 'warning',
50
- message,
51
- file: span.file,
52
- line: span.start.line,
53
- column: span.start.column,
54
- });
55
- }
@@ -1,27 +0,0 @@
1
- import type { TypeExprNode } from '../frontend/ast.js';
2
- import type { EmittedSourceSegment } from '../formats/types.js';
3
- export type PlacementKind = 'code' | 'data';
4
- export type PendingSymbol = {
5
- /** What kind of symbol is pending resolution. */
6
- kind: 'label' | 'data';
7
- /** Declared name (not yet bound to an address). */
8
- name: string;
9
- /** Target placement for the symbol. */
10
- placement: PlacementKind;
11
- /** Tentative offset within the placement; refined at finalize. */
12
- offset: number;
13
- /** Source file when known; omit for synthetic entries. */
14
- file?: string;
15
- /** 1-based source line when known. */
16
- line?: number;
17
- /** Local vs global source scope when applicable. */
18
- scope?: 'global' | 'local';
19
- /** Byte size for data when known. */
20
- size?: number;
21
- };
22
- export type SourceSegmentTag = Omit<EmittedSourceSegment, 'start' | 'end'>;
23
- /** Array shape extracted for lowering; `length` omitted when unknown. */
24
- export type ResolvedArrayType = {
25
- element: TypeExprNode;
26
- length?: number;
27
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,9 +0,0 @@
1
- import type { OpDeclNode } from '../frontend/ast.js';
2
- type OpCandidateRegistryContext = {
3
- /** Per-file op overload lists keyed by lowercased op name. */
4
- localOpsByFile: Map<string, Map<string, OpDeclNode[]>>;
5
- };
6
- export declare function createOpCandidateRegistryHelpers(ctx: OpCandidateRegistryContext): {
7
- resolveOpCandidatesForFile: (name: string, file: string) => OpDeclNode[] | undefined;
8
- };
9
- export {};
@@ -1,9 +0,0 @@
1
- export function createOpCandidateRegistryHelpers(ctx) {
2
- const resolveOpCandidatesForFile = (name, file) => {
3
- const lower = name.toLowerCase();
4
- return ctx.localOpsByFile.get(file)?.get(lower);
5
- };
6
- return {
7
- resolveOpCandidatesForFile,
8
- };
9
- }
@@ -1,15 +0,0 @@
1
- import type { AsmItemNode, AsmOperandNode, OpDeclNode } from '../frontend/ast.js';
2
- import type { AsmRangeLoweringCapability, HiddenLabelCapability, LoweringDiagnosticsCapability } from './capabilities.js';
3
- type OpExpansionExecutionContext = LoweringDiagnosticsCapability & HiddenLabelCapability & AsmRangeLoweringCapability;
4
- type ExpandAndLowerArgs = {
5
- opDecl: OpDeclNode;
6
- substituteOperandWithOpLabels: (operand: AsmOperandNode, localLabelMap: Map<string, string>) => AsmOperandNode;
7
- };
8
- type ExpandInlineOpBodyItemsArgs = ExpandAndLowerArgs & {
9
- allocateLocalLabel: (labelName: string, opDecl: OpDeclNode) => string;
10
- };
11
- export declare function expandInlineOpBodyItems({ opDecl, allocateLocalLabel, substituteOperandWithOpLabels, }: ExpandInlineOpBodyItemsArgs): AsmItemNode[];
12
- export declare function createOpExpansionExecutionHelpers(ctx: OpExpansionExecutionContext): {
13
- expandAndLowerOpBody: ({ opDecl, substituteOperandWithOpLabels, }: ExpandAndLowerArgs) => void;
14
- };
15
- export {};
@@ -1,45 +0,0 @@
1
- export function expandInlineOpBodyItems({ opDecl, allocateLocalLabel, substituteOperandWithOpLabels, }) {
2
- const localLabelMap = new Map();
3
- for (const bodyItem of opDecl.body.items) {
4
- if (bodyItem.kind !== 'AsmLabel')
5
- continue;
6
- const key = bodyItem.name.toLowerCase();
7
- if (!localLabelMap.has(key)) {
8
- localLabelMap.set(key, allocateLocalLabel(bodyItem.name, opDecl));
9
- }
10
- }
11
- return opDecl.body.items.map((bodyItem) => {
12
- if (bodyItem.kind === 'AsmInstruction') {
13
- return {
14
- kind: 'AsmInstruction',
15
- span: bodyItem.span,
16
- head: bodyItem.head,
17
- operands: bodyItem.operands.map((operand) => substituteOperandWithOpLabels(operand, localLabelMap)),
18
- };
19
- }
20
- if (bodyItem.kind === 'AsmLabel') {
21
- return {
22
- kind: 'AsmLabel',
23
- span: bodyItem.span,
24
- name: localLabelMap.get(bodyItem.name.toLowerCase()) ?? bodyItem.name,
25
- };
26
- }
27
- return bodyItem;
28
- });
29
- }
30
- export function createOpExpansionExecutionHelpers(ctx) {
31
- const expandAndLowerOpBody = ({ opDecl, substituteOperandWithOpLabels, }) => {
32
- const expandedItems = expandInlineOpBodyItems({
33
- opDecl,
34
- allocateLocalLabel: () => ctx.newHiddenLabel(`__azm_op_${opDecl.name.toLowerCase()}_lbl`),
35
- substituteOperandWithOpLabels,
36
- });
37
- const consumed = ctx.lowerAsmRange(expandedItems, 0, new Set());
38
- if (consumed < expandedItems.length) {
39
- ctx.diagAt(ctx.diagnostics, expandedItems[consumed].span, 'Internal control-flow lowering error.');
40
- }
41
- };
42
- return {
43
- expandAndLowerOpBody,
44
- };
45
- }
@@ -1,15 +0,0 @@
1
- import type { AsmInstructionNode, SourceSpan } from '../frontend/ast.js';
2
- import type { AsmRangeLoweringCapability, AstCloneCapability, CompileEnvCapability, DottedEaNameCapability, FixedTokenNormalizationCapability, FlowSyncCapability, HiddenLabelCapability, InverseConditionCapability, LoweringDiagnosticsWithSeverityCapability, OpCandidateResolverCapability, OpOperandFormattingCapability, OpOverloadSelectionCapability } from './capabilities.js';
3
- type OpExpansionStackEntry = {
4
- key: string;
5
- name: string;
6
- declSpan: SourceSpan;
7
- callSiteSpan: SourceSpan;
8
- };
9
- type OpExpansionOrchestrationContext = LoweringDiagnosticsWithSeverityCapability & CompileEnvCapability & OpCandidateResolverCapability & OpOperandFormattingCapability & OpOverloadSelectionCapability & AstCloneCapability & DottedEaNameCapability & FixedTokenNormalizationCapability & InverseConditionCapability & HiddenLabelCapability & AsmRangeLoweringCapability & FlowSyncCapability & {
10
- opExpansionStack: OpExpansionStackEntry[];
11
- };
12
- export declare function createOpExpansionOrchestrationHelpers(ctx: OpExpansionOrchestrationContext): {
13
- tryHandleOpExpansion: (asmItem: AsmInstructionNode) => boolean;
14
- };
15
- export {};
@@ -1,88 +0,0 @@
1
- import { DiagnosticIds } from '../diagnosticTypes.js';
2
- import { createOpExpansionExecutionHelpers } from './opExpansionExecution.js';
3
- import { createOpSubstitutionHelpers } from './opSubstitution.js';
4
- export function createOpExpansionOrchestrationHelpers(ctx) {
5
- const tryHandleOpExpansion = (asmItem) => {
6
- const opCandidates = ctx.resolveOpCandidates(asmItem.head, asmItem.span.file);
7
- if (!opCandidates || opCandidates.length === 0)
8
- return false;
9
- const selection = ctx.selectOpOverload(opCandidates, asmItem.operands);
10
- if (selection.kind === 'arity_mismatch') {
11
- const available = selection.signatures.map((signature) => ` - ${signature}`).join('\n');
12
- ctx.diagAtWithId(ctx.diagnostics, asmItem.span, DiagnosticIds.OpArityMismatch, `No op overload of "${asmItem.head}" accepts ${asmItem.operands.length} operand(s).\n` +
13
- `available overloads:\n${available}`);
14
- return true;
15
- }
16
- if (selection.kind === 'no_match') {
17
- const operandSummary = asmItem.operands.map(ctx.formatAsmOperandForOpDiag).join(', ');
18
- const available = selection.mismatchDetails.map((detail) => ` - ${detail}`).join('\n');
19
- ctx.diagAtWithId(ctx.diagnostics, asmItem.span, DiagnosticIds.OpNoMatchingOverload, `No matching op overload for "${asmItem.head}" with provided operands.\n` +
20
- `call-site operands: (${operandSummary})\n` +
21
- `available overloads:\n${available}`);
22
- return true;
23
- }
24
- if (selection.kind === 'ambiguous') {
25
- const operandSummary = asmItem.operands.map(ctx.formatAsmOperandForOpDiag).join(', ');
26
- const equallySpecific = selection.definitions
27
- .map((definition) => ` - ${definition}`)
28
- .join('\n');
29
- ctx.diagAtWithId(ctx.diagnostics, asmItem.span, DiagnosticIds.OpAmbiguousOverload, `Ambiguous op overload for "${asmItem.head}" (${selection.overloads.length} matches).\n` +
30
- `call-site operands: (${operandSummary})\n` +
31
- `equally specific candidates:\n${equallySpecific}`);
32
- return true;
33
- }
34
- const opDecl = selection.overload;
35
- const opKey = opDecl.name.toLowerCase();
36
- const cycleStart = ctx.opExpansionStack.findIndex((entry) => entry.key === opKey);
37
- if (cycleStart !== -1) {
38
- const cycleChain = [
39
- ...ctx.opExpansionStack
40
- .slice(cycleStart)
41
- .map((entry) => `${entry.name} (${entry.declSpan.file}:${entry.declSpan.start.line})`),
42
- `${opDecl.name} (${opDecl.span.file}:${opDecl.span.start.line})`,
43
- ].join(' -> ');
44
- ctx.diagAtWithId(ctx.diagnostics, asmItem.span, DiagnosticIds.OpExpansionCycle, `Cyclic op expansion detected for "${opDecl.name}".\n` + `expansion chain: ${cycleChain}`);
45
- return true;
46
- }
47
- const bindings = new Map();
48
- for (let idx = 0; idx < opDecl.params.length; idx++) {
49
- bindings.set(opDecl.params[idx].name.toLowerCase(), asmItem.operands[idx]);
50
- }
51
- const { substituteOperandWithOpLabels } = createOpSubstitutionHelpers({
52
- bindings,
53
- env: ctx.env,
54
- diagnostics: ctx.diagnostics,
55
- diagAt: ctx.diagAt,
56
- cloneImmExpr: ctx.cloneImmExpr,
57
- cloneEaExpr: ctx.cloneEaExpr,
58
- cloneOperand: ctx.cloneOperand,
59
- flattenEaDottedName: ctx.flattenEaDottedName,
60
- });
61
- ctx.opExpansionStack.push({
62
- key: opKey,
63
- name: opDecl.name,
64
- declSpan: opDecl.span,
65
- callSiteSpan: asmItem.span,
66
- });
67
- try {
68
- const { expandAndLowerOpBody } = createOpExpansionExecutionHelpers({
69
- diagnostics: ctx.diagnostics,
70
- diagAt: ctx.diagAt,
71
- newHiddenLabel: ctx.newHiddenLabel,
72
- lowerAsmRange: ctx.lowerAsmRange,
73
- });
74
- expandAndLowerOpBody({
75
- opDecl,
76
- substituteOperandWithOpLabels,
77
- });
78
- }
79
- finally {
80
- ctx.opExpansionStack.pop();
81
- }
82
- ctx.syncToFlow();
83
- return true;
84
- };
85
- return {
86
- tryHandleOpExpansion,
87
- };
88
- }
@@ -1,12 +0,0 @@
1
- import type { AsmInstructionNode, AsmLabelNode, ProgramNode } from '../frontend/ast.js';
2
- type ExpandedOpStreamItem = {
3
- kind: 'label';
4
- label: AsmLabelNode;
5
- } | {
6
- kind: 'instruction';
7
- instruction: AsmInstructionNode;
8
- };
9
- export declare function createInlineOpInstructionStreamExpander(program: ProgramNode): {
10
- expandInstruction: (inst: AsmInstructionNode) => ExpandedOpStreamItem[];
11
- };
12
- export {};