@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,26 +0,0 @@
1
- import { alignTo, computeWrittenRange, rebaseCodeSourceSegments, writeBytePlacement, } from './bytePlacement.js';
2
- import { evalImmExpr } from '../semantics/env.js';
3
- import { diag, diagAt } from './loweringDiagnostics.js';
4
- export function buildEmitFinalizationPhaseEnv(ctx) {
5
- return {
6
- diagnostics: ctx.diagnostics,
7
- diag,
8
- diagAt,
9
- primaryFile: ctx.workspace.config.primaryFile,
10
- baseExprs: ctx.workspace.placement.baseExprs,
11
- evalImmExpr,
12
- env: ctx.env,
13
- loweredAsmStream: ctx.helpers.loweredAsmStream,
14
- fixups: ctx.workspace.symbols.fixups,
15
- rel8Fixups: ctx.workspace.symbols.rel8Fixups,
16
- bytes: ctx.workspace.emission.bytes,
17
- codeSourceSegments: ctx.workspace.emission.codeSourceSegments,
18
- alignTo,
19
- writeBytePlacement,
20
- computeWrittenRange,
21
- rebaseCodeSourceSegments,
22
- ...(ctx.options?.defaultCodeBase !== undefined
23
- ? { defaultCodeBase: ctx.options.defaultCodeBase }
24
- : {}),
25
- };
26
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Assembles {@link createEmitProgramContext} bundles from phase-1 wiring output.
3
- */
4
- import { createEmitProgramContext } from './emitProgramContext.js';
5
- import type { EmitPhase1HelpersContext } from './emitPhase1Types.js';
6
- import type { EmitPhase1WireResult } from './emitPhase1WirePipeline.js';
7
- export declare function buildEmitProgramLoweringContext(ctx: EmitPhase1HelpersContext, wire: EmitPhase1WireResult): ReturnType<typeof createEmitProgramContext>['programLoweringContext'];
@@ -1,119 +0,0 @@
1
- /**
2
- * Assembles {@link createEmitProgramContext} bundles from phase-1 wiring output.
3
- */
4
- import { evalImmExpr } from '../semantics/env.js';
5
- import { sizeOfTypeExpr } from '../semantics/layout.js';
6
- import { cloneEaExpr, cloneImmExpr, cloneOperand, flattenEaDottedName } from './asmUtils.js';
7
- import { loadBinInput } from './inputAssets.js';
8
- import { diag, diagAt, diagAtWithId, diagAtWithSeverityAndId, warnAt, } from './loweringDiagnostics.js';
9
- import { createEmitProgramContext } from './emitProgramContext.js';
10
- import { alignTo } from './bytePlacement.js';
11
- export function buildEmitProgramLoweringContext(ctx, wire) {
12
- const { spTrackingSlot, getCurrentCodeOffset, traceComment, traceLabel, currentCodeSegmentTagRef, generatedLabelCounterRef, emitInstr, emitRawCodeBytes, emitAbs16Fixup, emitAbs16FixupPrefixed, emitRel8Fixup, callConditionOpcodeFromName, conditionNameFromOpcode, conditionOpcode, conditionOpcodeFromName, inverseConditionName, jrConditionOpcodeFromName, symbolicTargetFromExpr, resolveScalarKind, resolveEaTypeExpr, resolveArrayType, typeDisplay, sameTypeShape, resolveEa, resolveAggregateType, lowerLdWithEa, selectOpOverload, formatAsmOperandForOpDiag, normalizeFixedToken, reg8Names, reg16Names, activePlacementRef, codeOffsetRef, dataOffsetRef, advanceAlign, recordLoweredAsmItem, lowerImmExprForLoweredAsm, } = wire;
13
- const { programLoweringContext } = createEmitProgramContext({
14
- diagnostics: {
15
- diagnostics: ctx.diagnostics,
16
- diag,
17
- diagAt,
18
- diagAtWithId,
19
- diagAtWithSeverityAndId,
20
- warnAt,
21
- },
22
- symbolsAndTrace: {
23
- taken: ctx.workspace.symbols.taken,
24
- pending: ctx.workspace.symbols.pending,
25
- traceComment,
26
- traceLabel,
27
- currentCodeSegmentTagRef,
28
- generatedLabelCounterRef,
29
- },
30
- spTracking: {
31
- bindSpTracking: (callbacks) => {
32
- if (callbacks?.applySpTracking) {
33
- spTrackingSlot.apply = callbacks.applySpTracking;
34
- }
35
- else {
36
- delete spTrackingSlot.apply;
37
- }
38
- if (callbacks?.invalidateSpTracking) {
39
- spTrackingSlot.invalidate = callbacks.invalidateSpTracking;
40
- }
41
- else {
42
- delete spTrackingSlot.invalidate;
43
- }
44
- },
45
- },
46
- emission: {
47
- getCodeOffset: getCurrentCodeOffset,
48
- emitInstr,
49
- emitRawCodeBytes,
50
- emitAbs16Fixup,
51
- emitAbs16FixupPrefixed,
52
- emitRel8Fixup,
53
- },
54
- conditions: {
55
- conditionOpcodeFromName,
56
- conditionNameFromOpcode,
57
- callConditionOpcodeFromName,
58
- jrConditionOpcodeFromName,
59
- conditionOpcode,
60
- inverseConditionName,
61
- symbolicTargetFromExpr,
62
- },
63
- types: {
64
- evalImmExpr,
65
- env: ctx.env,
66
- resolveScalarKind,
67
- resolveAggregateType,
68
- resolveEaTypeExpr,
69
- resolveArrayType,
70
- typeDisplay,
71
- sameTypeShape,
72
- },
73
- addressing: {
74
- resolveEa,
75
- lowerLdWithEa,
76
- },
77
- opResolution: {
78
- resolveOpCandidates: ctx.workspace.ops.resolveOpCandidatesForFile,
79
- },
80
- opOverload: {
81
- formatAsmOperandForOpDiag,
82
- selectOpOverload,
83
- },
84
- astUtilities: {
85
- cloneImmExpr,
86
- cloneEaExpr,
87
- cloneOperand,
88
- flattenEaDottedName,
89
- normalizeFixedToken,
90
- },
91
- registers: {
92
- reg8: reg8Names,
93
- reg16: reg16Names,
94
- },
95
- program: {
96
- program: ctx.program,
97
- includeDirs: ctx.workspace.config.includeDirs,
98
- localOpsByFile: ctx.workspace.ops.localOpsByFile,
99
- declaredOpNames: ctx.workspace.ops.declaredOpNames,
100
- absoluteSymbols: ctx.workspace.symbols.absoluteSymbols,
101
- symbols: ctx.workspace.symbols.symbols,
102
- dataBytes: ctx.workspace.emission.dataBytes,
103
- codeBytes: ctx.workspace.emission.codeBytes,
104
- activePlacementRef,
105
- codeOffsetRef,
106
- dataOffsetRef,
107
- baseExprs: ctx.workspace.placement.baseExprs,
108
- advanceAlign,
109
- alignTo,
110
- loadBinInput,
111
- resolveAggregateType,
112
- sizeOfTypeExpr: (typeExpr) => sizeOfTypeExpr(typeExpr, ctx.env, ctx.diagnostics),
113
- recordLoweredAsmItem,
114
- lowerImmExprForLoweredAsm,
115
- currentCodeSegmentTagRef,
116
- },
117
- });
118
- return programLoweringContext;
119
- }
@@ -1,4 +0,0 @@
1
- import type { EmitPhase1Helpers, EmitPhase1HelpersContext } from './emitPhase1Types.js';
2
- export type { EmitPhase1Helpers } from './emitPhase1Types.js';
3
- /** Wires emit phase 1 helpers and program lowering context (see #1317). */
4
- export declare function createEmitPhase1Helpers(ctx: EmitPhase1HelpersContext): EmitPhase1Helpers;
@@ -1,12 +0,0 @@
1
- import { buildEmitProgramLoweringContext } from './emitPhase1BuildProgramLoweringContext.js';
2
- import { wireEmitPhase1Helpers } from './emitPhase1WirePipeline.js';
3
- /** Wires emit phase 1 helpers and program lowering context (see #1317). */
4
- export function createEmitPhase1Helpers(ctx) {
5
- const wire = wireEmitPhase1Helpers(ctx);
6
- const programLoweringContext = buildEmitProgramLoweringContext(ctx, wire);
7
- return {
8
- flushTrailingUserComments: wire.flushTrailingUserComments,
9
- loweredAsmStream: ctx.workspace.emission.loweredAsmStream,
10
- programLoweringContext,
11
- };
12
- }
@@ -1,21 +0,0 @@
1
- import type { ProgramNode } from '../frontend/ast.js';
2
- import type { CompileEnv } from '../semantics/env.js';
3
- import type { Diagnostic } from '../diagnosticTypes.js';
4
- import type { EmitProgramOptions } from './emitPipeline.js';
5
- import type { EmitPhase1Workspace } from './emitPhase1Workspace.js';
6
- type EmitProgramContextResult = ReturnType<typeof import('./emitProgramContext.js').createEmitProgramContext>;
7
- /** Inputs for emit phase 1 helper wiring (program lowering + asm recording). */
8
- export type EmitPhase1HelpersContext = {
9
- program: ProgramNode;
10
- env: CompileEnv;
11
- diagnostics: Diagnostic[];
12
- options?: EmitProgramOptions;
13
- workspace: EmitPhase1Workspace;
14
- };
15
- /** Public surface returned from {@link createEmitPhase1Helpers}. */
16
- export type EmitPhase1Helpers = {
17
- flushTrailingUserComments: () => void;
18
- loweredAsmStream: EmitPhase1Workspace['emission']['loweredAsmStream'];
19
- programLoweringContext: EmitProgramContextResult['programLoweringContext'];
20
- };
21
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,70 +0,0 @@
1
- /**
2
- * Emit phase 1 wiring: type resolution, emit state, fixups, emission core, EA/op matching,
3
- * directive-alias bootstrap, addressing, and LD lowering.
4
- */
5
- import type { AsmOperandNode, SourceSpan } from '../frontend/ast.js';
6
- import { createEaResolutionHelpers } from './eaResolution.js';
7
- import { createLdLoweringHelpers } from './ldLowering.js';
8
- import { createOpMatchingHelpers } from './opMatching.js';
9
- import { createFixupEmissionHelpers } from './fixupEmission.js';
10
- import { createAsmUtilityHelpers } from './asmUtils.js';
11
- import { createTypeResolutionHelpers } from '../semantics/typeQueries.js';
12
- import { createEmitStateHelpers } from './emitState.js';
13
- import type { EmitPhase1HelpersContext } from './emitPhase1Types.js';
14
- declare const REG8_NAMES: Set<string>;
15
- declare const REG16_NAMES: Set<string>;
16
- /** Mutable slot so {@link buildEmitProgramLoweringContext} can wire SP tracking without closure over `let`. */
17
- type SpTrackingSlot = {
18
- apply?: (headRaw: string, operands: AsmOperandNode[]) => void;
19
- invalidate?: () => void;
20
- };
21
- /** Intermediate closures and bundles passed to {@link buildEmitProgramLoweringContext}. */
22
- export type EmitPhase1WireResult = {
23
- spTrackingSlot: SpTrackingSlot;
24
- flushTrailingUserComments: ReturnType<typeof createEmitStateHelpers>['flushTrailingUserComments'];
25
- reg8Names: typeof REG8_NAMES;
26
- reg16Names: typeof REG16_NAMES;
27
- getCurrentCodeOffset: ReturnType<typeof createEmitStateHelpers>['getCurrentCodeOffset'];
28
- setCurrentCodeOffset: ReturnType<typeof createEmitStateHelpers>['setCurrentCodeOffset'];
29
- setCurrentCodeByte: ReturnType<typeof createEmitStateHelpers>['setCurrentCodeByte'];
30
- recordCodeSourceRange: ReturnType<typeof createEmitStateHelpers>['recordCodeSourceRange'];
31
- pushCurrentFixup: ReturnType<typeof createEmitStateHelpers>['pushCurrentFixup'];
32
- pushCurrentRel8Fixup: ReturnType<typeof createEmitStateHelpers>['pushCurrentRel8Fixup'];
33
- traceLabel: ReturnType<typeof createEmitStateHelpers>['traceLabel'];
34
- traceComment: ReturnType<typeof createEmitStateHelpers>['traceComment'];
35
- advanceAlign: ReturnType<typeof createEmitStateHelpers>['advanceAlign'];
36
- activePlacementRef: ReturnType<typeof createEmitStateHelpers>['activePlacementRef'];
37
- codeOffsetRef: ReturnType<typeof createEmitStateHelpers>['codeOffsetRef'];
38
- dataOffsetRef: ReturnType<typeof createEmitStateHelpers>['dataOffsetRef'];
39
- currentCodeSegmentTagRef: ReturnType<typeof createEmitStateHelpers>['currentCodeSegmentTagRef'];
40
- generatedLabelCounterRef: ReturnType<typeof createEmitStateHelpers>['generatedLabelCounterRef'];
41
- recordLoweredAsmItem: ReturnType<typeof createEmitStateHelpers>['recordLoweredAsmItem'];
42
- lowerImmExprForLoweredAsm: ReturnType<typeof createEmitStateHelpers>['lowerImmExprForLoweredAsm'];
43
- lowerOperandForLoweredAsm: ReturnType<typeof createEmitStateHelpers>['lowerOperandForLoweredAsm'];
44
- emitInstr: (head: string, operands: AsmOperandNode[], span: SourceSpan) => boolean;
45
- emitRawCodeBytes: (bs: Uint8Array, file: string, traceText: string) => void;
46
- callConditionOpcodeFromName: ReturnType<typeof createFixupEmissionHelpers>['callConditionOpcodeFromName'];
47
- conditionNameFromOpcode: ReturnType<typeof createFixupEmissionHelpers>['conditionNameFromOpcode'];
48
- conditionOpcode: ReturnType<typeof createFixupEmissionHelpers>['conditionOpcode'];
49
- conditionOpcodeFromName: ReturnType<typeof createFixupEmissionHelpers>['conditionOpcodeFromName'];
50
- emitAbs16Fixup: ReturnType<typeof createFixupEmissionHelpers>['emitAbs16Fixup'];
51
- emitAbs16FixupEd: ReturnType<typeof createFixupEmissionHelpers>['emitAbs16FixupEd'];
52
- emitAbs16FixupPrefixed: ReturnType<typeof createFixupEmissionHelpers>['emitAbs16FixupPrefixed'];
53
- emitRel8Fixup: ReturnType<typeof createFixupEmissionHelpers>['emitRel8Fixup'];
54
- inverseConditionName: ReturnType<typeof createFixupEmissionHelpers>['inverseConditionName'];
55
- jrConditionOpcodeFromName: ReturnType<typeof createFixupEmissionHelpers>['jrConditionOpcodeFromName'];
56
- symbolicTargetFromExpr: ReturnType<typeof createFixupEmissionHelpers>['symbolicTargetFromExpr'];
57
- normalizeFixedToken: ReturnType<typeof createAsmUtilityHelpers>['normalizeFixedToken'];
58
- resolveEa: ReturnType<typeof createEaResolutionHelpers>['resolveEa'];
59
- selectOpOverload: ReturnType<typeof createOpMatchingHelpers>['selectOpOverload'];
60
- formatAsmOperandForOpDiag: ReturnType<typeof createOpMatchingHelpers>['formatAsmOperandForOpDiag'];
61
- lowerLdWithEa: ReturnType<typeof createLdLoweringHelpers>['lowerLdWithEa'];
62
- resolveAggregateType: ReturnType<typeof createTypeResolutionHelpers>['resolveAggregateType'];
63
- resolveScalarKind: ReturnType<typeof createTypeResolutionHelpers>['resolveScalarKind'];
64
- resolveEaTypeExpr: ReturnType<typeof createTypeResolutionHelpers>['resolveEaTypeExpr'];
65
- resolveArrayType: ReturnType<typeof createTypeResolutionHelpers>['resolveArrayType'];
66
- typeDisplay: ReturnType<typeof createTypeResolutionHelpers>['typeDisplay'];
67
- sameTypeShape: ReturnType<typeof createTypeResolutionHelpers>['sameTypeShape'];
68
- };
69
- export declare function wireEmitPhase1Helpers(ctx: EmitPhase1HelpersContext): EmitPhase1WireResult;
70
- export {};
@@ -1,203 +0,0 @@
1
- /**
2
- * Emit phase 1 wiring: type resolution, emit state, fixups, emission core, EA/op matching,
3
- * directive-alias bootstrap, addressing, and LD lowering.
4
- */
5
- import { evalImmExpr } from '../semantics/env.js';
6
- import { sizeOfTypeExpr } from '../semantics/layout.js';
7
- import { encodeInstruction } from '../z80/encode.js';
8
- import { buildEaResolutionContext, createEaResolutionHelpers } from './eaResolution.js';
9
- import { createLdLoweringHelpers } from './ldLowering.js';
10
- import { createOpMatchingHelpers } from './opMatching.js';
11
- import { createEmissionCoreHelpers } from './emissionCore.js';
12
- import { createFixupEmissionHelpers } from './fixupEmission.js';
13
- import { createAsmUtilityHelpers, flattenEaDottedName } from './asmUtils.js';
14
- import { formatImmExprForAsm } from './traceFormat.js';
15
- import { createTypeResolutionHelpers } from '../semantics/typeQueries.js';
16
- import { createEmitStateHelpers } from './emitState.js';
17
- import { alignTo } from './bytePlacement.js';
18
- import { diagAt } from './loweringDiagnostics.js';
19
- const REG8_NAMES = new Set(['A', 'B', 'C', 'D', 'E', 'H', 'L']);
20
- const REG16_NAMES = new Set(['BC', 'DE', 'HL', 'IX', 'IY']);
21
- const REG8_CODES = new Map([
22
- ['B', 0],
23
- ['C', 1],
24
- ['D', 2],
25
- ['E', 3],
26
- ['H', 4],
27
- ['L', 5],
28
- ['A', 7],
29
- ]);
30
- export function wireEmitPhase1Helpers(ctx) {
31
- const spTrackingSlot = {};
32
- let emitCodeBytes;
33
- let emitRawCodeBytes;
34
- const { resolveAggregateType, resolveArrayType, resolveEaTypeExpr, resolveScalarKind, sameTypeShape, typeDisplay, } = createTypeResolutionHelpers({
35
- env: ctx.env,
36
- });
37
- const evalImmNoDiag = (expr) => {
38
- const scratch = [];
39
- return evalImmExpr(expr, ctx.env, scratch);
40
- };
41
- const { activePlacementRef, codeOffsetRef, dataOffsetRef, currentCodeSegmentTagRef, generatedLabelCounterRef, getCurrentCodeOffset, setCurrentCodeOffset, setCurrentCodeByte, pushCurrentFixup, pushCurrentRel8Fixup, recordCodeSourceRange, traceLabel, traceComment, advanceAlign, flushTrailingUserComments, lowerImmExprForLoweredAsm, lowerOperandForLoweredAsm, recordLoweredAsmItem, } = createEmitStateHelpers({
42
- ...(ctx.options?.sourceTexts ? { sourceTexts: ctx.options.sourceTexts } : {}),
43
- ...(ctx.options?.sourceLineComments
44
- ? { sourceLineComments: ctx.options.sourceLineComments }
45
- : {}),
46
- codeBytes: ctx.workspace.emission.codeBytes,
47
- codeSourceSegments: ctx.workspace.emission.codeSourceSegments,
48
- fixups: ctx.workspace.symbols.fixups,
49
- rel8Fixups: ctx.workspace.symbols.rel8Fixups,
50
- loweredAsmStream: ctx.workspace.emission.loweredAsmStream,
51
- loweredAsmBlocksByKey: ctx.workspace.emission.loweredAsmBlocksByKey,
52
- alignTo,
53
- evalImmNoDiag,
54
- symbolicTargetFromExpr: (expr) => symbolicTargetFromExpr(expr),
55
- formatImmExprForAsm,
56
- typeDisplay: (typeExpr) => typeDisplay(typeExpr),
57
- });
58
- const emitInstr = (head, operands, span) => {
59
- const syntheticInstruction = {
60
- kind: 'AsmInstruction',
61
- span,
62
- head,
63
- operands,
64
- };
65
- const encoded = encodeInstruction(syntheticInstruction, ctx.env, ctx.diagnostics);
66
- if (!encoded)
67
- return false;
68
- recordLoweredAsmItem({
69
- kind: 'instr',
70
- head,
71
- operands: operands.map((op) => lowerOperandForLoweredAsm(op)),
72
- bytes: [...encoded],
73
- }, span);
74
- emitCodeBytes(encoded, span.file);
75
- spTrackingSlot.apply?.(head, operands);
76
- return true;
77
- };
78
- const { callConditionOpcodeFromName, conditionNameFromOpcode, conditionOpcode, conditionOpcodeFromName, emitAbs16Fixup, emitAbs16FixupEd, emitAbs16FixupPrefixed, emitRel8Fixup, inverseConditionName, jrConditionOpcodeFromName, symbolicTargetFromExpr, } = createFixupEmissionHelpers({
79
- getCodeOffset: getCurrentCodeOffset,
80
- setCodeOffset: setCurrentCodeOffset,
81
- setCodeByte: setCurrentCodeByte,
82
- recordCodeSourceRange,
83
- pushFixup: pushCurrentFixup,
84
- pushRel8Fixup: pushCurrentRel8Fixup,
85
- traceInstruction: (_offset, _bytesOut, _text) => { },
86
- recordLoweredInstr: (bytes, _asmText, span) => {
87
- recordLoweredAsmItem({
88
- kind: 'instr',
89
- head: '@raw',
90
- operands: [],
91
- bytes: [...bytes],
92
- }, span);
93
- },
94
- evalImmExpr: (expr) => evalImmExpr(expr, ctx.env, ctx.diagnostics),
95
- });
96
- ({ emitCodeBytes, emitRawCodeBytes } = createEmissionCoreHelpers({
97
- getCodeOffset: getCurrentCodeOffset,
98
- setCodeOffset: setCurrentCodeOffset,
99
- setCodeByte: setCurrentCodeByte,
100
- recordCodeSourceRange,
101
- traceInstruction: (_offset, _bytesOut, _text) => { },
102
- }));
103
- const emitRawCodeBytesImpl = emitRawCodeBytes;
104
- emitRawCodeBytes = (bs, file, traceText) => {
105
- recordLoweredAsmItem({ kind: 'instr', head: '@raw', operands: [], bytes: [...bs] });
106
- emitRawCodeBytesImpl(bs, file, traceText);
107
- };
108
- const { normalizeFixedToken } = createAsmUtilityHelpers({
109
- isEnumName: (name) => ctx.env.enums.has(name),
110
- });
111
- const { resolveEa } = createEaResolutionHelpers(buildEaResolutionContext({
112
- env: ctx.env,
113
- diagnostics: ctx.diagnostics,
114
- diagAt,
115
- resolveScalarKind,
116
- resolveAggregateType,
117
- resolveEaTypeExpr,
118
- evalImmNoDiag,
119
- }));
120
- const isIxIyIndexedMem = (op) => op.kind === 'Mem' &&
121
- ((op.expr.kind === 'EaName' && /^(IX|IY)$/i.test(op.expr.name)) ||
122
- ((op.expr.kind === 'EaAdd' || op.expr.kind === 'EaSub') &&
123
- op.expr.base.kind === 'EaName' &&
124
- /^(IX|IY)$/i.test(op.expr.base.name)));
125
- const inferMemWidth = (op) => {
126
- if (op.kind !== 'Mem')
127
- return undefined;
128
- const resolved = resolveEa(op.expr, op.span);
129
- if (!resolved?.typeExpr)
130
- return undefined;
131
- return sizeOfTypeExpr(resolved.typeExpr, ctx.env, ctx.diagnostics);
132
- };
133
- const { selectOpOverload, formatAsmOperandForOpDiag } = createOpMatchingHelpers({
134
- reg8: REG8_NAMES,
135
- isIxIyIndexedMem,
136
- flattenEaDottedName,
137
- isEnumName: (name) => ctx.env.enums.has(name),
138
- normalizeFixedToken,
139
- conditionOpcodeFromName,
140
- evalImmNoDiag,
141
- inferMemWidth,
142
- });
143
- const { lowerLdWithEa } = createLdLoweringHelpers({
144
- diagAt,
145
- diagnostics: ctx.diagnostics,
146
- emitAbs16Fixup,
147
- emitAbs16FixupEd,
148
- emitAbs16FixupPrefixed,
149
- env: ctx.env,
150
- reg8Code: REG8_CODES,
151
- resolveEa,
152
- setSpTrackingInvalid: () => {
153
- spTrackingSlot.invalidate?.();
154
- },
155
- });
156
- return {
157
- spTrackingSlot,
158
- flushTrailingUserComments,
159
- reg8Names: REG8_NAMES,
160
- reg16Names: REG16_NAMES,
161
- getCurrentCodeOffset,
162
- setCurrentCodeOffset,
163
- setCurrentCodeByte,
164
- recordCodeSourceRange,
165
- pushCurrentFixup,
166
- pushCurrentRel8Fixup,
167
- traceLabel,
168
- traceComment,
169
- advanceAlign,
170
- activePlacementRef,
171
- codeOffsetRef,
172
- dataOffsetRef,
173
- currentCodeSegmentTagRef,
174
- generatedLabelCounterRef,
175
- recordLoweredAsmItem,
176
- lowerImmExprForLoweredAsm,
177
- lowerOperandForLoweredAsm,
178
- emitInstr,
179
- emitRawCodeBytes,
180
- callConditionOpcodeFromName,
181
- conditionNameFromOpcode,
182
- conditionOpcode,
183
- conditionOpcodeFromName,
184
- emitAbs16Fixup,
185
- emitAbs16FixupEd,
186
- emitAbs16FixupPrefixed,
187
- emitRel8Fixup,
188
- inverseConditionName,
189
- jrConditionOpcodeFromName,
190
- symbolicTargetFromExpr,
191
- normalizeFixedToken,
192
- resolveEa,
193
- selectOpOverload,
194
- formatAsmOperandForOpDiag,
195
- lowerLdWithEa,
196
- resolveAggregateType,
197
- resolveScalarKind,
198
- resolveEaTypeExpr,
199
- resolveArrayType,
200
- typeDisplay,
201
- sameTypeShape,
202
- };
203
- }
@@ -1,82 +0,0 @@
1
- import type { ImmExprNode, OpDeclNode, ProgramNode } from '../frontend/ast.js';
2
- import type { CompileEnv } from '../semantics/env.js';
3
- import type { EmittedSourceSegment, SymbolEntry } from '../formats/types.js';
4
- import type { EmitProgramOptions } from './emitPipeline.js';
5
- import type { PendingSymbol } from './loweringTypes.js';
6
- import type { LoweredAsmStream, LoweredAsmStreamBlock } from './loweredAsmTypes.js';
7
- import { createOpCandidateRegistryHelpers } from './opCandidateRegistry.js';
8
- /** Byte maps, listing segments, and lowered-asm recording for phase 1. */
9
- type EmitPhase1EmissionState = {
10
- /** Merged map of all emitted bytes across code/data placement. */
11
- bytes: Map<number, number>;
12
- /** Code-placement bytes only (before merge into `bytes` for some paths). */
13
- codeBytes: Map<number, number>;
14
- /** Data-placement bytes. */
15
- dataBytes: Map<number, number>;
16
- /** Source ranges for emitted code bytes (listing/debug). */
17
- codeSourceSegments: EmittedSourceSegment[];
18
- /** Stream of lowered asm blocks for tracing. */
19
- loweredAsmStream: LoweredAsmStream;
20
- /** Lookup of lowered asm blocks by stable key. */
21
- loweredAsmBlocksByKey: Map<string, LoweredAsmStreamBlock>;
22
- };
23
- type EmitPhase1AbsFixup = {
24
- offset: number;
25
- baseLower: string;
26
- addend: number;
27
- file: string;
28
- };
29
- type EmitPhase1Rel8Fixup = {
30
- offset: number;
31
- origin: number;
32
- baseLower: string;
33
- addend: number;
34
- file: string;
35
- mnemonic: string;
36
- };
37
- /** Symbol tables, fixup queues, and name reservation. */
38
- type EmitPhase1SymbolState = {
39
- /** Symbols with absolute addresses after prescan/lowering. */
40
- absoluteSymbols: SymbolEntry[];
41
- /** All collected symbol table entries. */
42
- symbols: SymbolEntry[];
43
- /** Pending forward references not yet bound. */
44
- pending: PendingSymbol[];
45
- /** Lowercased names already claimed by labels or generated/internal symbols. */
46
- taken: Set<string>;
47
- /** Absolute 16-bit fixups pending placement (offset in output, symbol, addend). */
48
- fixups: EmitPhase1AbsFixup[];
49
- /** Relative 8-bit PC-relative fixups. */
50
- rel8Fixups: EmitPhase1Rel8Fixup[];
51
- };
52
- /** Op candidate lookup. */
53
- type EmitPhase1OpRegistry = {
54
- /** Per-file op overload lists. */
55
- localOpsByFile: Map<string, Map<string, OpDeclNode[]>>;
56
- /** All declared `op` names (lowercased) for diagnostics. */
57
- declaredOpNames: Set<string>;
58
- /** Resolves op candidates declared for a file. */
59
- resolveOpCandidatesForFile: ReturnType<typeof createOpCandidateRegistryHelpers>['resolveOpCandidatesForFile'];
60
- };
61
- /** Options and paths fixed for the emit run. */
62
- type EmitPhase1EmitConfig = {
63
- /** Entry / primary source file path. */
64
- primaryFile: string;
65
- /** Resolved include directories for asset loads. */
66
- includeDirs: string[];
67
- };
68
- /** Mutable placement maps for the current lowering context. */
69
- type EmitPhase1PlacementState = {
70
- /** Optional base imm expressions per placement. */
71
- baseExprs: Partial<Record<'code' | 'data', ImmExprNode>>;
72
- };
73
- /** Root workspace for emit phase 1: grouped sub-objects replace a single flat struct. */
74
- export type EmitPhase1Workspace = {
75
- emission: EmitPhase1EmissionState;
76
- symbols: EmitPhase1SymbolState;
77
- ops: EmitPhase1OpRegistry;
78
- config: EmitPhase1EmitConfig;
79
- placement: EmitPhase1PlacementState;
80
- };
81
- export declare function createEmitPhase1Workspace(program: ProgramNode, env: CompileEnv, options?: EmitProgramOptions): EmitPhase1Workspace;
82
- export {};
@@ -1,55 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { createOpCandidateRegistryHelpers } from './opCandidateRegistry.js';
3
- export function createEmitPhase1Workspace(program, env, options) {
4
- const bytes = new Map();
5
- const codeBytes = new Map();
6
- const dataBytes = new Map();
7
- const codeSourceSegments = [];
8
- const loweredAsmStream = { blocks: [] };
9
- const loweredAsmBlocksByKey = new Map();
10
- const absoluteSymbols = [];
11
- const symbols = [];
12
- const pending = [];
13
- const taken = new Set();
14
- const fixups = [];
15
- const rel8Fixups = [];
16
- const localOpsByFile = new Map();
17
- const declaredOpNames = new Set();
18
- const { resolveOpCandidatesForFile } = createOpCandidateRegistryHelpers({
19
- localOpsByFile,
20
- });
21
- const baseExprs = {};
22
- const firstSourceFile = program.files[0];
23
- const primaryFile = firstSourceFile.span.file ?? program.entryFile;
24
- const includeDirs = (options?.includeDirs ?? []).map((p) => resolve(p));
25
- return {
26
- emission: {
27
- bytes,
28
- codeBytes,
29
- dataBytes,
30
- codeSourceSegments,
31
- loweredAsmStream,
32
- loweredAsmBlocksByKey,
33
- },
34
- symbols: {
35
- absoluteSymbols,
36
- symbols,
37
- pending,
38
- taken,
39
- fixups,
40
- rel8Fixups,
41
- },
42
- ops: {
43
- localOpsByFile,
44
- declaredOpNames,
45
- resolveOpCandidatesForFile,
46
- },
47
- config: {
48
- primaryFile,
49
- includeDirs,
50
- },
51
- placement: {
52
- baseExprs,
53
- },
54
- };
55
- }