@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,121 +0,0 @@
1
- /**
2
- * Emit orchestration phases for `emitProgram`.
3
- *
4
- * Pipeline (conceptual):
5
- *
6
- * 1. **Workspace setup** — lives in `emit.ts`: placement byte maps, fixup queues, op registries,
7
- * resolution helpers, and the program-lowering context (`createEmitProgramContext`). This
8
- * phase wires mutable state and callbacks; it does not traverse the whole program yet.
9
- *
10
- * 2. **Prescan** — `runEmitPrescanPhase`: discover ops and
11
- * raw-address names so later lowering can resolve symbols. Product: {@link PrescanResult}.
12
- *
13
- * 3. **Lowering** — `runEmitLoweringPhase`: traverse declarations and instruction streams, emit bytes
14
- * into placement maps, enqueue fixups. Product: {@link LoweringResult}.
15
- *
16
- * 4. **Placement & artifacts** — `runEmitPlacementAndArtifactPhase`: fixup resolution,
17
- * merged `EmittedByteMap`, symbol table, placed lowered-ASM program.
18
- * Input: {@link EmitFinalizationContext} (built via {@link mergeEmitFinalizationContext}).
19
- *
20
- * Format writers stay in `compile.ts` / `PipelineDeps`; this module only produces the
21
- * in-memory products they consume.
22
- */
23
- import type { EmittedByteMap, SymbolEntry } from '../formats/types.js';
24
- import { type EmitFinalizationContext } from './emitFinalization.js';
25
- import type { LoweredAsmProgram, LoweredAsmStream } from './loweredAsmTypes.js';
26
- import type { PrescanResult } from './prescanTypes.js';
27
- import { type Context as ProgramLoweringContext, type LoweringResult, type PrescanContext } from './programLowering.js';
28
- type EmitPrescanPhaseContext = PrescanContext;
29
- type EmitPrescanPhaseResult = PrescanResult;
30
- type EmitLoweringPhaseContext = ProgramLoweringContext;
31
- interface EmitLoweringPhaseResult {
32
- /** Next code-placement allocation offset after lowering. */
33
- readonly codeOffset: LoweringResult['codeOffset'];
34
- /** Next data-placement offset. */
35
- readonly dataOffset: LoweringResult['dataOffset'];
36
- /** Symbols still pending resolution. */
37
- readonly pending: LoweringResult['pending'];
38
- /** Emitted symbol table entries. */
39
- readonly symbols: LoweringResult['symbols'];
40
- /** Absolute-address symbols. */
41
- readonly absoluteSymbols: LoweringResult['absoluteSymbols'];
42
- /** Emitted code bytes map. */
43
- readonly codeBytes: LoweringResult['codeBytes'];
44
- /** Emitted data bytes map. */
45
- readonly dataBytes: LoweringResult['dataBytes'];
46
- }
47
- /** Options for `emitProgram` (include paths, policy flags, listing sources). */
48
- export type EmitProgramOptions = {
49
- /** Extra include directories for `include` / assets; omit for none. */
50
- includeDirs?: string[];
51
- /** Default code load address for placement; omit uses pipeline default. */
52
- defaultCodeBase?: number;
53
- /** Optional full source text per file for listings. */
54
- sourceTexts?: Map<string, string>;
55
- /** Optional line-end comments keyed by file and 1-based line. */
56
- sourceLineComments?: Map<string, Map<number, string>>;
57
- };
58
- /** In-memory compile products passed to format writers (plus trace stream). */
59
- export type EmitProgramResult = {
60
- /** Final merged address→byte map for writers. */
61
- map: EmittedByteMap;
62
- /** Resolved symbol table. */
63
- symbols: SymbolEntry[];
64
- /** Raw lowered asm trace from phase 1. */
65
- loweredAsmStream: LoweredAsmStream;
66
- /** Lowered asm after placement. */
67
- placedLoweredAsmProgram: LoweredAsmProgram;
68
- };
69
- /** Finalization inputs that come from phase-1 wiring rather than phase-3 lowering. */
70
- export interface EmitFinalizationEnv {
71
- /** Shared diagnostics buffer. */
72
- readonly diagnostics: EmitFinalizationContext['diagnostics'];
73
- /** File-level diagnostic helper. */
74
- readonly diag: EmitFinalizationContext['diag'];
75
- /** Span-level diagnostic helper. */
76
- readonly diagAt: EmitFinalizationContext['diagAt'];
77
- /** Primary source path for diagnostics. */
78
- readonly primaryFile: EmitFinalizationContext['primaryFile'];
79
- /** Code/data placement base imm expressions. */
80
- readonly baseExprs: EmitFinalizationContext['baseExprs'];
81
- /** Imm evaluator used during placement. */
82
- readonly evalImmExpr: EmitFinalizationContext['evalImmExpr'];
83
- /** Compile environment. */
84
- readonly env: EmitFinalizationContext['env'];
85
- /** Lowered asm stream to place. */
86
- readonly loweredAsmStream: EmitFinalizationContext['loweredAsmStream'];
87
- /** Pending abs16 fixups. */
88
- readonly fixups: EmitFinalizationContext['fixups'];
89
- /** Pending rel8 fixups. */
90
- readonly rel8Fixups: EmitFinalizationContext['rel8Fixups'];
91
- /** Working byte map before merge. */
92
- readonly bytes: EmitFinalizationContext['bytes'];
93
- /** Code source segments for rebasing. */
94
- readonly codeSourceSegments: EmitFinalizationContext['codeSourceSegments'];
95
- /** Byte alignment helper. */
96
- readonly alignTo: EmitFinalizationContext['alignTo'];
97
- /** Writes a byte-offset slice into the byte map. */
98
- readonly writeBytePlacement: EmitFinalizationContext['writeBytePlacement'];
99
- /** Computes written byte ranges for overlap checks. */
100
- readonly computeWrittenRange: EmitFinalizationContext['computeWrittenRange'];
101
- /** Rebases source map after placement moves. */
102
- readonly rebaseCodeSourceSegments: EmitFinalizationContext['rebaseCodeSourceSegments'];
103
- /** Optional default code base override. */
104
- readonly defaultCodeBase?: number;
105
- }
106
- type EmitPlacementPhaseContext = EmitLoweringPhaseResult & EmitFinalizationEnv;
107
- type EmitPlacementPhaseResult = Omit<EmitProgramResult, 'loweredAsmStream'>;
108
- /**
109
- * Combine lowering output with placement/fixup inputs. `lowered` is the typed handoff from
110
- * the lowering phase; `env` holds shared refs (maps, diagnostics, helpers) held across phases.
111
- */
112
- export declare function mergeEmitFinalizationContext(lowered: EmitLoweringPhaseResult, env: EmitFinalizationEnv): EmitPlacementPhaseContext;
113
- /** Deterministic empty result when compilation aborts before lowering (e.g. no source files). */
114
- export declare function emitProgramEmptyResult(): EmitProgramResult;
115
- /** Phase 2 — prescan: build op candidate maps and alias metadata before emission. */
116
- export declare function runEmitPrescanPhase(ctx: EmitPrescanPhaseContext): EmitPrescanPhaseResult;
117
- /** Phase 3 — lowering: emit declarations and instruction streams into placement bytes and fixup queues. */
118
- export declare function runEmitLoweringPhase(ctx: EmitLoweringPhaseContext, prescan: EmitPrescanPhaseResult): EmitLoweringPhaseResult;
119
- /** Phase 4 — placement, fixups, merged map and placed lowered ASM. */
120
- export declare function runEmitPlacementAndArtifactPhase(context: EmitPlacementPhaseContext): EmitPlacementPhaseResult;
121
- export {};
@@ -1,57 +0,0 @@
1
- /**
2
- * Emit orchestration phases for `emitProgram`.
3
- *
4
- * Pipeline (conceptual):
5
- *
6
- * 1. **Workspace setup** — lives in `emit.ts`: placement byte maps, fixup queues, op registries,
7
- * resolution helpers, and the program-lowering context (`createEmitProgramContext`). This
8
- * phase wires mutable state and callbacks; it does not traverse the whole program yet.
9
- *
10
- * 2. **Prescan** — `runEmitPrescanPhase`: discover ops and
11
- * raw-address names so later lowering can resolve symbols. Product: {@link PrescanResult}.
12
- *
13
- * 3. **Lowering** — `runEmitLoweringPhase`: traverse declarations and instruction streams, emit bytes
14
- * into placement maps, enqueue fixups. Product: {@link LoweringResult}.
15
- *
16
- * 4. **Placement & artifacts** — `runEmitPlacementAndArtifactPhase`: fixup resolution,
17
- * merged `EmittedByteMap`, symbol table, placed lowered-ASM program.
18
- * Input: {@link EmitFinalizationContext} (built via {@link mergeEmitFinalizationContext}).
19
- *
20
- * Format writers stay in `compile.ts` / `PipelineDeps`; this module only produces the
21
- * in-memory products they consume.
22
- */
23
- import { finalizeEmitProgram } from './emitFinalization.js';
24
- import { preScanProgramDeclarations } from './programPrescan.js';
25
- import { lowerProgramDeclarations } from './programLoweringTraversal.js';
26
- // --- Phase handoff: merge lowering output with finalization inputs ---
27
- /**
28
- * Combine lowering output with placement/fixup inputs. `lowered` is the typed handoff from
29
- * the lowering phase; `env` holds shared refs (maps, diagnostics, helpers) held across phases.
30
- */
31
- export function mergeEmitFinalizationContext(lowered, env) {
32
- return { ...lowered, ...env };
33
- }
34
- /** Deterministic empty result when compilation aborts before lowering (e.g. no source files). */
35
- export function emitProgramEmptyResult() {
36
- return {
37
- map: { bytes: new Map() },
38
- symbols: [],
39
- loweredAsmStream: { blocks: [] },
40
- placedLoweredAsmProgram: { blocks: [] },
41
- };
42
- }
43
- // --- Phase 2: prescan (ops) ---
44
- /** Phase 2 — prescan: build op candidate maps and alias metadata before emission. */
45
- export function runEmitPrescanPhase(ctx) {
46
- return preScanProgramDeclarations(ctx);
47
- }
48
- // --- Phase 3: lowering (emit bytes, fixups, lowered ASM stream) ---
49
- /** Phase 3 — lowering: emit declarations and instruction streams into placement bytes and fixup queues. */
50
- export function runEmitLoweringPhase(ctx, prescan) {
51
- return lowerProgramDeclarations({ ...ctx, prescan });
52
- }
53
- // --- Phase 4: finalization (placement, fixups, artifact assembly) ---
54
- /** Phase 4 — placement, fixups, merged map and placed lowered ASM. */
55
- export function runEmitPlacementAndArtifactPhase(context) {
56
- return finalizeEmitProgram(context);
57
- }
@@ -1,39 +0,0 @@
1
- /**
2
- * Emit program context wiring (#1084, #1316)
3
- *
4
- * Callers pass named bundles aligned with {@link AssemblerLoweringComponentContexts}; the builder
5
- * forwards them without flattening to {@link createEmitLoweringContexts}.
6
- */
7
- import type { AssemblerLoweringAstUtilityContext, AssemblerLoweringConditionContext, AssemblerLoweringDiagnosticsContext, AssemblerLoweringEmissionContext, AssemblerLoweringAddressingContext, AssemblerLoweringOpOverloadContext, AssemblerLoweringOpResolutionContext, AssemblerLoweringRegisterContext, AssemblerLoweringSpTrackingContext, AssemblerLoweringSymbolContext, AssemblerLoweringTypeContext } from './assemblerLoweringContext.js';
8
- import type { EmitProgramLoweringContextInputs } from './emitContextBuilder.js';
9
- type EmitDiagnosticsBundle = AssemblerLoweringDiagnosticsContext;
10
- type EmitSymbolsAndTraceBundle = AssemblerLoweringSymbolContext;
11
- type EmitSpTrackingBundle = AssemblerLoweringSpTrackingContext;
12
- type EmitEmissionBundle = AssemblerLoweringEmissionContext;
13
- type EmitConditionsBundle = AssemblerLoweringConditionContext;
14
- type EmitTypesBundle = AssemblerLoweringTypeContext;
15
- type EmitAddressingBundle = AssemblerLoweringAddressingContext;
16
- type EmitOpResolutionBundle = AssemblerLoweringOpResolutionContext;
17
- type EmitOpOverloadBundle = AssemblerLoweringOpOverloadContext;
18
- type EmitAstUtilitiesBundle = AssemblerLoweringAstUtilityContext;
19
- type EmitRegistersBundle = AssemblerLoweringRegisterContext;
20
- /** Named bundles passed from `emitProgram` into lowering context construction. */
21
- type EmitProgramContextBundles = {
22
- readonly diagnostics: Readonly<EmitDiagnosticsBundle>;
23
- readonly symbolsAndTrace: Readonly<EmitSymbolsAndTraceBundle>;
24
- readonly spTracking: Readonly<EmitSpTrackingBundle>;
25
- readonly emission: Readonly<EmitEmissionBundle>;
26
- readonly conditions: Readonly<EmitConditionsBundle>;
27
- readonly types: Readonly<EmitTypesBundle>;
28
- readonly addressing: Readonly<EmitAddressingBundle>;
29
- readonly opResolution: Readonly<EmitOpResolutionBundle>;
30
- readonly opOverload: Readonly<EmitOpOverloadBundle>;
31
- readonly astUtilities: Readonly<EmitAstUtilitiesBundle>;
32
- readonly registers: Readonly<EmitRegistersBundle>;
33
- readonly program: Readonly<EmitProgramLoweringContextInputs>;
34
- };
35
- export declare function createEmitProgramContext(bundles: Readonly<EmitProgramContextBundles>): {
36
- assemblerLoweringSharedContext: import("./assemblerLoweringContext.js").AssemblerLoweringSharedContext;
37
- programLoweringContext: import("./programLowering.js").Context;
38
- };
39
- export {};
@@ -1,29 +0,0 @@
1
- /**
2
- * Emit program context wiring (#1084, #1316)
3
- *
4
- * Callers pass named bundles aligned with {@link AssemblerLoweringComponentContexts}; the builder
5
- * forwards them without flattening to {@link createEmitLoweringContexts}.
6
- */
7
- import { createEmitLoweringContexts } from './emitContextBuilder.js';
8
- function emitProgramBundlesToLoweringBuilderInput(b) {
9
- const assemblerLowering = {
10
- diagnostics: b.diagnostics,
11
- symbols: b.symbolsAndTrace,
12
- spTracking: b.spTracking,
13
- emission: b.emission,
14
- conditions: b.conditions,
15
- types: b.types,
16
- addressing: b.addressing,
17
- opResolution: b.opResolution,
18
- opOverload: b.opOverload,
19
- astUtilities: b.astUtilities,
20
- registers: b.registers,
21
- };
22
- return {
23
- assemblerLowering,
24
- programLowering: b.program,
25
- };
26
- }
27
- export function createEmitProgramContext(bundles) {
28
- return createEmitLoweringContexts(emitProgramBundlesToLoweringBuilderInput(bundles));
29
- }
@@ -1,90 +0,0 @@
1
- import type { EmittedSourceSegment } from '../formats/types.js';
2
- import type { SourceSpan, ImmExprNode } from '../frontend/ast.js';
3
- import type { PlacementKind, SourceSegmentTag } from './loweringTypes.js';
4
- import type { LoweredAsmStream, LoweredAsmStreamBlock } from './loweredAsmTypes.js';
5
- type EmitStateContext = {
6
- /** Full source text per file for listings. */
7
- sourceTexts?: Map<string, string>;
8
- /** Line-end comments keyed by file and line. */
9
- sourceLineComments?: Map<string, Map<number, string>>;
10
- /** Code-placement byte map. */
11
- codeBytes: Map<number, number>;
12
- /** Source segment ranges for code bytes. */
13
- codeSourceSegments: EmittedSourceSegment[];
14
- /** Pending abs16 fixups. */
15
- fixups: Array<{
16
- offset: number;
17
- baseLower: string;
18
- addend: number;
19
- file: string;
20
- }>;
21
- /** Pending rel8 fixups. */
22
- rel8Fixups: Array<{
23
- offset: number;
24
- origin: number;
25
- baseLower: string;
26
- addend: number;
27
- file: string;
28
- mnemonic: string;
29
- }>;
30
- /** Lowered asm trace stream. */
31
- loweredAsmStream: LoweredAsmStream;
32
- /** Lowered asm blocks keyed for random access. */
33
- loweredAsmBlocksByKey: Map<string, LoweredAsmStreamBlock>;
34
- /** Alignment helper. */
35
- alignTo: (n: number, alignment: number) => number;
36
- /** Best-effort imm evaluation. */
37
- evalImmNoDiag: (expr: ImmExprNode) => number | undefined;
38
- /** Parses simple symbolic targets; `undefined` if not symbolic. */
39
- symbolicTargetFromExpr: (expr: ImmExprNode) => {
40
- baseLower: string;
41
- addend: number;
42
- } | undefined;
43
- /** Formats an imm for lowered asm text. */
44
- formatImmExprForAsm: (expr: ImmExprNode) => string;
45
- /** Pretty-prints a type for traces. */
46
- typeDisplay: (typeExpr: import('../frontend/ast.js').TypeExprNode) => string;
47
- };
48
- export declare function createEmitStateHelpers(ctx: EmitStateContext): {
49
- activePlacementRef: {
50
- current: PlacementKind;
51
- };
52
- codeOffsetRef: {
53
- current: number;
54
- };
55
- dataOffsetRef: {
56
- current: number;
57
- };
58
- currentCodeSegmentTagRef: {
59
- current: SourceSegmentTag | undefined;
60
- };
61
- generatedLabelCounterRef: {
62
- current: number;
63
- };
64
- getCurrentCodeOffset: () => number;
65
- setCurrentCodeOffset: (value: number) => void;
66
- setCurrentCodeByte: (offset: number, value: number) => void;
67
- pushCurrentFixup: (fixup: {
68
- offset: number;
69
- baseLower: string;
70
- addend: number;
71
- file: string;
72
- }) => void;
73
- pushCurrentRel8Fixup: (fixup: {
74
- offset: number;
75
- origin: number;
76
- baseLower: string;
77
- addend: number;
78
- file: string;
79
- mnemonic: string;
80
- }) => void;
81
- recordCodeSourceRange: (start: number, end: number) => void;
82
- traceLabel: (_offset: number, name: string, span?: SourceSpan) => void;
83
- traceComment: (_offset: number, text: string) => void;
84
- advanceAlign: (a: number) => void;
85
- flushTrailingUserComments: () => void;
86
- lowerImmExprForLoweredAsm: (expr: ImmExprNode) => import("./loweredAsmTypes.js").LoweredImmExpr;
87
- lowerOperandForLoweredAsm: (operand: import("../frontend/ast.js").AsmOperandNode) => import("./loweredAsmTypes.js").LoweredOperand;
88
- recordLoweredAsmItem: (item: import("./loweredAsmTypes.js").LoweredAsmItem, span?: SourceSpan) => void;
89
- };
90
- export {};
@@ -1,124 +0,0 @@
1
- import { createLoweredAsmStreamRecordingHelpers } from './loweredAsmStreamRecording.js';
2
- export function createEmitStateHelpers(ctx) {
3
- let activePlacement = 'code';
4
- let codeOffset = 0;
5
- let dataOffset = 0;
6
- let currentCodeSegmentTag;
7
- let generatedLabelCounter = 0;
8
- const sameSourceTag = (x, y) => x.file === y.file &&
9
- x.line === y.line &&
10
- x.column === y.column &&
11
- x.kind === y.kind &&
12
- x.confidence === y.confidence;
13
- const recordCodeSourceRange = (start, end) => {
14
- if (!currentCodeSegmentTag || end <= start)
15
- return;
16
- const segments = ctx.codeSourceSegments;
17
- const last = segments[segments.length - 1];
18
- if (last && last.end === start && sameSourceTag(last, currentCodeSegmentTag)) {
19
- last.end = end;
20
- return;
21
- }
22
- segments.push({ ...currentCodeSegmentTag, start, end });
23
- };
24
- const activePlacementRef = {
25
- get current() {
26
- return activePlacement;
27
- },
28
- set current(value) {
29
- activePlacement = value;
30
- },
31
- };
32
- const codeOffsetRef = {
33
- get current() {
34
- return codeOffset;
35
- },
36
- set current(value) {
37
- codeOffset = value;
38
- },
39
- };
40
- const dataOffsetRef = {
41
- get current() {
42
- return dataOffset;
43
- },
44
- set current(value) {
45
- dataOffset = value;
46
- },
47
- };
48
- const currentCodeSegmentTagRef = {
49
- get current() {
50
- return currentCodeSegmentTag;
51
- },
52
- set current(value) {
53
- currentCodeSegmentTag = value;
54
- },
55
- };
56
- const generatedLabelCounterRef = {
57
- get current() {
58
- return generatedLabelCounter;
59
- },
60
- set current(value) {
61
- generatedLabelCounter = value;
62
- },
63
- };
64
- const getCurrentCodeOffset = () => codeOffset;
65
- const setCurrentCodeOffset = (value) => {
66
- codeOffset = value;
67
- };
68
- const setCurrentCodeByte = (offset, value) => {
69
- ctx.codeBytes.set(offset, value);
70
- };
71
- const pushCurrentFixup = (fixup) => {
72
- ctx.fixups.push(fixup);
73
- };
74
- const pushCurrentRel8Fixup = (fixup) => {
75
- ctx.rel8Fixups.push(fixup);
76
- };
77
- const advanceAlign = (a) => {
78
- switch (activePlacement) {
79
- case 'code':
80
- codeOffset = ctx.alignTo(codeOffset, a);
81
- return;
82
- case 'data':
83
- dataOffset = ctx.alignTo(dataOffset, a);
84
- return;
85
- }
86
- };
87
- const { flushTrailingUserComments, lowerImmExprForLoweredAsm, lowerOperandForLoweredAsm, recordLoweredAsmItem, } = createLoweredAsmStreamRecordingHelpers({
88
- activePlacementRef,
89
- loweredAsmBlocksByKey: ctx.loweredAsmBlocksByKey,
90
- loweredAsmStream: ctx.loweredAsmStream,
91
- ...(ctx.sourceLineComments ? { sourceLineComments: ctx.sourceLineComments } : {}),
92
- ...(ctx.sourceTexts ? { sourceTexts: ctx.sourceTexts } : {}),
93
- evalImmNoDiag: ctx.evalImmNoDiag,
94
- symbolicTargetFromExpr: ctx.symbolicTargetFromExpr,
95
- formatImmExprForAsm: ctx.formatImmExprForAsm,
96
- typeDisplay: ctx.typeDisplay,
97
- });
98
- const traceLabel = (_offset, name, span) => {
99
- recordLoweredAsmItem({ kind: 'label', name }, span);
100
- };
101
- const traceComment = (_offset, text) => {
102
- recordLoweredAsmItem({ kind: 'comment', text, origin: 'generated' });
103
- };
104
- return {
105
- activePlacementRef,
106
- codeOffsetRef,
107
- dataOffsetRef,
108
- currentCodeSegmentTagRef,
109
- generatedLabelCounterRef,
110
- getCurrentCodeOffset,
111
- setCurrentCodeOffset,
112
- setCurrentCodeByte,
113
- pushCurrentFixup,
114
- pushCurrentRel8Fixup,
115
- recordCodeSourceRange,
116
- traceLabel,
117
- traceComment,
118
- advanceAlign,
119
- flushTrailingUserComments,
120
- lowerImmExprForLoweredAsm,
121
- lowerOperandForLoweredAsm,
122
- recordLoweredAsmItem,
123
- };
124
- }
@@ -1,7 +0,0 @@
1
- import type { CompileEnv } from '../semantics/env.js';
2
- type FixupBaseResolver = (nameLower: string, visiting?: Set<string>) => number | undefined;
3
- export declare function createFixupBaseResolver(args: {
4
- env: CompileEnv;
5
- addrByNameLower: Map<string, number>;
6
- }): FixupBaseResolver;
7
- export {};
@@ -1,23 +0,0 @@
1
- import { parseNumberLiteral } from '../frontend/parseImm.js';
2
- import { resolveAsmEquSymbol } from './asmEquResolution.js';
3
- export function createFixupBaseResolver(args) {
4
- const { env, addrByNameLower } = args;
5
- return (nameLower, visiting = new Set()) => {
6
- const sym = addrByNameLower.get(nameLower);
7
- if (sym !== undefined)
8
- return sym;
9
- const literal = parseNumberLiteral(nameLower);
10
- if (literal !== undefined)
11
- return literal;
12
- if (/^-?[0-9]+$/.test(nameLower))
13
- return Number.parseInt(nameLower, 10);
14
- return resolveAsmEquSymbol(nameLower, {
15
- env,
16
- lookupSymbol: (name) => addrByNameLower.get(name),
17
- cacheResolved: (name, value) => {
18
- addrByNameLower.set(name, value);
19
- env.equates.set(name, value);
20
- },
21
- }, visiting);
22
- };
23
- }
@@ -1,64 +0,0 @@
1
- import type { AsmOperandNode, ImmExprNode, SourceSpan } from '../frontend/ast.js';
2
- type FixupRecord = {
3
- /** Patch offset in code. */
4
- offset: number;
5
- /** Target symbol (lowercased). */
6
- baseLower: string;
7
- /** Byte addend. */
8
- addend: number;
9
- /** Owning file. */
10
- file: string;
11
- };
12
- type Rel8FixupRecord = {
13
- /** Patch offset. */
14
- offset: number;
15
- /** Branch origin. */
16
- origin: number;
17
- /** Target symbol. */
18
- baseLower: string;
19
- /** Addend. */
20
- addend: number;
21
- /** Owning file. */
22
- file: string;
23
- /** Mnemonic for diagnostics. */
24
- mnemonic: string;
25
- };
26
- type EvalImmExpr = (expr: ImmExprNode) => number | undefined;
27
- type TraceInstruction = (start: number, bytes: Uint8Array, asmText: string) => void;
28
- type FixupEmissionContext = {
29
- /** Current code offset. */
30
- getCodeOffset: () => number;
31
- /** Sets code offset. */
32
- setCodeOffset: (value: number) => void;
33
- /** Writes a code byte. */
34
- setCodeByte: (offset: number, value: number) => void;
35
- /** Records source range for listing. */
36
- recordCodeSourceRange: (start: number, end: number) => void;
37
- /** Enqueues abs16 fixup. */
38
- pushFixup: (fixup: FixupRecord) => void;
39
- /** Enqueues rel8 fixup. */
40
- pushRel8Fixup: (fixup: Rel8FixupRecord) => void;
41
- /** Trace hook for raw emission. */
42
- traceInstruction: TraceInstruction;
43
- /** Optional lowered-instr recorder for asm trace. */
44
- recordLoweredInstr?: (bytes: Uint8Array, asmText: string, span: SourceSpan) => void;
45
- /** Const imm evaluation. */
46
- evalImmExpr: EvalImmExpr;
47
- };
48
- export declare function createFixupEmissionHelpers(ctx: FixupEmissionContext): {
49
- callConditionOpcodeFromName: (nameRaw: string) => number | undefined;
50
- conditionNameFromOpcode: (opcode: number) => string | undefined;
51
- conditionOpcode: (op: AsmOperandNode) => number | undefined;
52
- conditionOpcodeFromName: (nameRaw: string) => number | undefined;
53
- emitAbs16Fixup: (opcode: number, baseLower: string, addend: number, span: SourceSpan, asmText?: string) => void;
54
- emitAbs16FixupEd: (opcode2: number, baseLower: string, addend: number, span: SourceSpan, asmText?: string) => void;
55
- emitAbs16FixupPrefixed: (prefix: number, opcode2: number, baseLower: string, addend: number, span: SourceSpan, asmText?: string) => void;
56
- emitRel8Fixup: (opcode: number, baseLower: string, addend: number, span: SourceSpan, mnemonic: string, asmText?: string) => void;
57
- inverseConditionName: (nameRaw: string) => string | undefined;
58
- jrConditionOpcodeFromName: (nameRaw: string) => number | undefined;
59
- symbolicTargetFromExpr: (expr: ImmExprNode) => {
60
- baseLower: string;
61
- addend: number;
62
- } | undefined;
63
- };
64
- export {};