@jhlagado/azm 0.2.1 → 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 (313) hide show
  1. package/README.md +16 -9
  2. package/dist/src/api-compile.d.ts +0 -2
  3. package/dist/src/api-compile.js +1 -8
  4. package/dist/src/assembly/address-planning.js +19 -1
  5. package/dist/src/cli/parse-args.d.ts +0 -1
  6. package/dist/src/cli/parse-args.js +0 -7
  7. package/dist/src/cli/write-artifacts.js +0 -11
  8. package/dist/src/core/compile.js +192 -9
  9. package/dist/src/expansion/op-expansion.js +1 -0
  10. package/dist/src/model/expression.d.ts +4 -0
  11. package/dist/src/model/source-item.d.ts +5 -0
  12. package/dist/src/outputs/index.js +0 -2
  13. package/dist/src/outputs/types.d.ts +3 -16
  14. package/dist/src/outputs/write-asm80.js +84 -0
  15. package/dist/src/semantics/expression-evaluation.d.ts +7 -3
  16. package/dist/src/semantics/expression-evaluation.js +57 -0
  17. package/dist/src/syntax/directive-aliases.js +9 -10
  18. package/dist/src/syntax/parse-expression.js +34 -9
  19. package/dist/src/syntax/parse-line.js +87 -44
  20. package/dist/src/tooling/case-style.js +3 -0
  21. package/docs/reference/cli.md +6 -4
  22. package/docs/reference/tooling-api.md +1 -4
  23. package/package.json +2 -6
  24. package/dist/legacy-root-azm/src/analysis.d.ts +0 -11
  25. package/dist/legacy-root-azm/src/analysis.js +0 -41
  26. package/dist/legacy-root-azm/src/compile.d.ts +0 -10
  27. package/dist/legacy-root-azm/src/compile.js +0 -186
  28. package/dist/legacy-root-azm/src/compileShared.d.ts +0 -3
  29. package/dist/legacy-root-azm/src/compileShared.js +0 -7
  30. package/dist/legacy-root-azm/src/diagnosticTypes.d.ts +0 -77
  31. package/dist/legacy-root-azm/src/diagnosticTypes.js +0 -53
  32. package/dist/legacy-root-azm/src/formats/index.d.ts +0 -7
  33. package/dist/legacy-root-azm/src/formats/index.js +0 -17
  34. package/dist/legacy-root-azm/src/formats/range.d.ts +0 -17
  35. package/dist/legacy-root-azm/src/formats/range.js +0 -45
  36. package/dist/legacy-root-azm/src/formats/types.d.ts +0 -283
  37. package/dist/legacy-root-azm/src/formats/types.js +0 -1
  38. package/dist/legacy-root-azm/src/formats/writeAsm80.d.ts +0 -6
  39. package/dist/legacy-root-azm/src/formats/writeAsm80.js +0 -86
  40. package/dist/legacy-root-azm/src/formats/writeBin.d.ts +0 -7
  41. package/dist/legacy-root-azm/src/formats/writeBin.js +0 -23
  42. package/dist/legacy-root-azm/src/formats/writeD8m.d.ts +0 -9
  43. package/dist/legacy-root-azm/src/formats/writeD8m.js +0 -245
  44. package/dist/legacy-root-azm/src/formats/writeHex.d.ts +0 -8
  45. package/dist/legacy-root-azm/src/formats/writeHex.js +0 -38
  46. package/dist/legacy-root-azm/src/formats/writeListing.d.ts +0 -8
  47. package/dist/legacy-root-azm/src/formats/writeListing.js +0 -83
  48. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.d.ts +0 -39
  49. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.js +0 -89
  50. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.d.ts +0 -4
  51. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.js +0 -94
  52. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.d.ts +0 -10
  53. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.js +0 -25
  54. package/dist/legacy-root-azm/src/frontend/ast.d.ts +0 -376
  55. package/dist/legacy-root-azm/src/frontend/ast.js +0 -1
  56. package/dist/legacy-root-azm/src/frontend/directiveAliases.d.ts +0 -14
  57. package/dist/legacy-root-azm/src/frontend/directiveAliases.js +0 -189
  58. package/dist/legacy-root-azm/src/frontend/grammarData.d.ts +0 -14
  59. package/dist/legacy-root-azm/src/frontend/grammarData.js +0 -65
  60. package/dist/legacy-root-azm/src/frontend/immExprUtils.d.ts +0 -2
  61. package/dist/legacy-root-azm/src/frontend/immExprUtils.js +0 -12
  62. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.d.ts +0 -17
  63. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.js +0 -187
  64. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.d.ts +0 -3
  65. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.js +0 -73
  66. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.d.ts +0 -6
  67. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.js +0 -16
  68. package/dist/legacy-root-azm/src/frontend/parseAsmStream.d.ts +0 -10
  69. package/dist/legacy-root-azm/src/frontend/parseAsmStream.js +0 -33
  70. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.d.ts +0 -18
  71. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.js +0 -34
  72. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.d.ts +0 -9
  73. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.js +0 -16
  74. package/dist/legacy-root-azm/src/frontend/parseEnum.d.ts +0 -12
  75. package/dist/legacy-root-azm/src/frontend/parseEnum.js +0 -70
  76. package/dist/legacy-root-azm/src/frontend/parseImm.d.ts +0 -10
  77. package/dist/legacy-root-azm/src/frontend/parseImm.js +0 -397
  78. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.d.ts +0 -11
  79. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.js +0 -94
  80. package/dist/legacy-root-azm/src/frontend/parseOp.d.ts +0 -25
  81. package/dist/legacy-root-azm/src/frontend/parseOp.js +0 -120
  82. package/dist/legacy-root-azm/src/frontend/parseOpHeader.d.ts +0 -20
  83. package/dist/legacy-root-azm/src/frontend/parseOpHeader.js +0 -32
  84. package/dist/legacy-root-azm/src/frontend/parseOperands.d.ts +0 -4
  85. package/dist/legacy-root-azm/src/frontend/parseOperands.js +0 -290
  86. package/dist/legacy-root-azm/src/frontend/parseParams.d.ts +0 -6
  87. package/dist/legacy-root-azm/src/frontend/parseParams.js +0 -62
  88. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.d.ts +0 -12
  89. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.js +0 -17
  90. package/dist/legacy-root-azm/src/frontend/parseParserShared.d.ts +0 -2
  91. package/dist/legacy-root-azm/src/frontend/parseParserShared.js +0 -8
  92. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.d.ts +0 -1
  93. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.js +0 -3
  94. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.d.ts +0 -7
  95. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.js +0 -142
  96. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.d.ts +0 -34
  97. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.js +0 -177
  98. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.d.ts +0 -46
  99. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.js +0 -53
  100. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.d.ts +0 -16
  101. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.js +0 -68
  102. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.d.ts +0 -11
  103. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.js +0 -50
  104. package/dist/legacy-root-azm/src/frontend/parseTypes.d.ts +0 -24
  105. package/dist/legacy-root-azm/src/frontend/parseTypes.js +0 -77
  106. package/dist/legacy-root-azm/src/frontend/parser.d.ts +0 -11
  107. package/dist/legacy-root-azm/src/frontend/parser.js +0 -88
  108. package/dist/legacy-root-azm/src/frontend/source.d.ts +0 -28
  109. package/dist/legacy-root-azm/src/frontend/source.js +0 -58
  110. package/dist/legacy-root-azm/src/frontend/sourceExtensions.d.ts +0 -2
  111. package/dist/legacy-root-azm/src/frontend/sourceExtensions.js +0 -6
  112. package/dist/legacy-root-azm/src/lintCaseStyle.d.ts +0 -4
  113. package/dist/legacy-root-azm/src/lintCaseStyle.js +0 -129
  114. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.d.ts +0 -4
  115. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.js +0 -229
  116. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.d.ts +0 -47
  117. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.js +0 -52
  118. package/dist/legacy-root-azm/src/lowering/asmEquResolution.d.ts +0 -8
  119. package/dist/legacy-root-azm/src/lowering/asmEquResolution.js +0 -69
  120. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.d.ts +0 -15
  121. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.js +0 -102
  122. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.d.ts +0 -5
  123. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.js +0 -54
  124. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.d.ts +0 -46
  125. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.js +0 -51
  126. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.d.ts +0 -43
  127. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.js +0 -254
  128. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.d.ts +0 -23
  129. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.js +0 -1
  130. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.d.ts +0 -28
  131. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.js +0 -144
  132. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.d.ts +0 -17
  133. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.js +0 -39
  134. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.d.ts +0 -16
  135. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.js +0 -209
  136. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.d.ts +0 -4
  137. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.js +0 -9
  138. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.d.ts +0 -4
  139. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.js +0 -14
  140. package/dist/legacy-root-azm/src/lowering/asmUtils.d.ts +0 -13
  141. package/dist/legacy-root-azm/src/lowering/asmUtils.js +0 -105
  142. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.d.ts +0 -54
  143. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.js +0 -128
  144. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.d.ts +0 -151
  145. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.js +0 -16
  146. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.d.ts +0 -7
  147. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.js +0 -75
  148. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.d.ts +0 -66
  149. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.js +0 -166
  150. package/dist/legacy-root-azm/src/lowering/bytePlacement.d.ts +0 -7
  151. package/dist/legacy-root-azm/src/lowering/bytePlacement.js +0 -37
  152. package/dist/legacy-root-azm/src/lowering/capabilities.d.ts +0 -67
  153. package/dist/legacy-root-azm/src/lowering/capabilities.js +0 -1
  154. package/dist/legacy-root-azm/src/lowering/eaResolution.d.ts +0 -58
  155. package/dist/legacy-root-azm/src/lowering/eaResolution.js +0 -159
  156. package/dist/legacy-root-azm/src/lowering/emissionCore.d.ts +0 -17
  157. package/dist/legacy-root-azm/src/lowering/emissionCore.js +0 -21
  158. package/dist/legacy-root-azm/src/lowering/emit.d.ts +0 -17
  159. package/dist/legacy-root-azm/src/lowering/emit.js +0 -46
  160. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.d.ts +0 -63
  161. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.js +0 -41
  162. package/dist/legacy-root-azm/src/lowering/emitFinalization.d.ts +0 -61
  163. package/dist/legacy-root-azm/src/lowering/emitFinalization.js +0 -66
  164. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.d.ts +0 -19
  165. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.js +0 -26
  166. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -7
  167. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.js +0 -119
  168. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.d.ts +0 -4
  169. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.js +0 -12
  170. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.d.ts +0 -21
  171. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.js +0 -1
  172. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.d.ts +0 -70
  173. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.js +0 -203
  174. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.d.ts +0 -82
  175. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.js +0 -55
  176. package/dist/legacy-root-azm/src/lowering/emitPipeline.d.ts +0 -121
  177. package/dist/legacy-root-azm/src/lowering/emitPipeline.js +0 -57
  178. package/dist/legacy-root-azm/src/lowering/emitProgramContext.d.ts +0 -39
  179. package/dist/legacy-root-azm/src/lowering/emitProgramContext.js +0 -29
  180. package/dist/legacy-root-azm/src/lowering/emitState.d.ts +0 -90
  181. package/dist/legacy-root-azm/src/lowering/emitState.js +0 -124
  182. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.d.ts +0 -7
  183. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.js +0 -23
  184. package/dist/legacy-root-azm/src/lowering/fixupEmission.d.ts +0 -64
  185. package/dist/legacy-root-azm/src/lowering/fixupEmission.js +0 -199
  186. package/dist/legacy-root-azm/src/lowering/immMath.d.ts +0 -2
  187. package/dist/legacy-root-azm/src/lowering/immMath.js +0 -34
  188. package/dist/legacy-root-azm/src/lowering/inputAssets.d.ts +0 -7
  189. package/dist/legacy-root-azm/src/lowering/inputAssets.js +0 -106
  190. package/dist/legacy-root-azm/src/lowering/ldEncoding.d.ts +0 -15
  191. package/dist/legacy-root-azm/src/lowering/ldEncoding.js +0 -12
  192. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.d.ts +0 -5
  193. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.js +0 -124
  194. package/dist/legacy-root-azm/src/lowering/ldFormSelection.d.ts +0 -26
  195. package/dist/legacy-root-azm/src/lowering/ldFormSelection.js +0 -92
  196. package/dist/legacy-root-azm/src/lowering/ldLowering.d.ts +0 -7
  197. package/dist/legacy-root-azm/src/lowering/ldLowering.js +0 -13
  198. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.d.ts +0 -23
  199. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.js +0 -185
  200. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.d.ts +0 -13
  201. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.js +0 -86
  202. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.d.ts +0 -27
  203. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.js +0 -215
  204. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.d.ts +0 -202
  205. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.js +0 -1
  206. package/dist/legacy-root-azm/src/lowering/loweredFormat.d.ts +0 -3
  207. package/dist/legacy-root-azm/src/lowering/loweredFormat.js +0 -26
  208. package/dist/legacy-root-azm/src/lowering/loweredItemSize.d.ts +0 -4
  209. package/dist/legacy-root-azm/src/lowering/loweredItemSize.js +0 -17
  210. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.d.ts +0 -9
  211. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.js +0 -55
  212. package/dist/legacy-root-azm/src/lowering/loweringTypes.d.ts +0 -27
  213. package/dist/legacy-root-azm/src/lowering/loweringTypes.js +0 -1
  214. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.d.ts +0 -9
  215. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.js +0 -9
  216. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.d.ts +0 -15
  217. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.js +0 -45
  218. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.d.ts +0 -15
  219. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.js +0 -88
  220. package/dist/legacy-root-azm/src/lowering/opExpansionStream.d.ts +0 -12
  221. package/dist/legacy-root-azm/src/lowering/opExpansionStream.js +0 -176
  222. package/dist/legacy-root-azm/src/lowering/opMatching.d.ts +0 -52
  223. package/dist/legacy-root-azm/src/lowering/opMatching.js +0 -355
  224. package/dist/legacy-root-azm/src/lowering/opSubstitution.d.ts +0 -13
  225. package/dist/legacy-root-azm/src/lowering/opSubstitution.js +0 -175
  226. package/dist/legacy-root-azm/src/lowering/prescanTypes.d.ts +0 -7
  227. package/dist/legacy-root-azm/src/lowering/prescanTypes.js +0 -1
  228. package/dist/legacy-root-azm/src/lowering/programLowering.d.ts +0 -144
  229. package/dist/legacy-root-azm/src/lowering/programLowering.js +0 -2
  230. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.d.ts +0 -5
  231. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.js +0 -5
  232. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.d.ts +0 -18
  233. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.js +0 -115
  234. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.d.ts +0 -2
  235. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.js +0 -93
  236. package/dist/legacy-root-azm/src/lowering/programPrescan.d.ts +0 -3
  237. package/dist/legacy-root-azm/src/lowering/programPrescan.js +0 -37
  238. package/dist/legacy-root-azm/src/lowering/traceFormat.d.ts +0 -13
  239. package/dist/legacy-root-azm/src/lowering/traceFormat.js +0 -211
  240. package/dist/legacy-root-azm/src/packageInfo.d.ts +0 -1
  241. package/dist/legacy-root-azm/src/packageInfo.js +0 -15
  242. package/dist/legacy-root-azm/src/pathCompare.d.ts +0 -3
  243. package/dist/legacy-root-azm/src/pathCompare.js +0 -26
  244. package/dist/legacy-root-azm/src/pipeline.d.ts +0 -91
  245. package/dist/legacy-root-azm/src/pipeline.js +0 -1
  246. package/dist/legacy-root-azm/src/registerCare/analyze.d.ts +0 -24
  247. package/dist/legacy-root-azm/src/registerCare/analyze.js +0 -327
  248. package/dist/legacy-root-azm/src/registerCare/annotate.d.ts +0 -11
  249. package/dist/legacy-root-azm/src/registerCare/annotate.js +0 -76
  250. package/dist/legacy-root-azm/src/registerCare/boundaryHints.d.ts +0 -2
  251. package/dist/legacy-root-azm/src/registerCare/boundaryHints.js +0 -10
  252. package/dist/legacy-root-azm/src/registerCare/carriers.d.ts +0 -4
  253. package/dist/legacy-root-azm/src/registerCare/carriers.js +0 -78
  254. package/dist/legacy-root-azm/src/registerCare/controlFlow.d.ts +0 -5
  255. package/dist/legacy-root-azm/src/registerCare/controlFlow.js +0 -35
  256. package/dist/legacy-root-azm/src/registerCare/fix.d.ts +0 -11
  257. package/dist/legacy-root-azm/src/registerCare/fix.js +0 -119
  258. package/dist/legacy-root-azm/src/registerCare/liveness.d.ts +0 -7
  259. package/dist/legacy-root-azm/src/registerCare/liveness.js +0 -227
  260. package/dist/legacy-root-azm/src/registerCare/profiles.d.ts +0 -11
  261. package/dist/legacy-root-azm/src/registerCare/profiles.js +0 -45
  262. package/dist/legacy-root-azm/src/registerCare/programModel.d.ts +0 -3
  263. package/dist/legacy-root-azm/src/registerCare/programModel.js +0 -181
  264. package/dist/legacy-root-azm/src/registerCare/report.d.ts +0 -5
  265. package/dist/legacy-root-azm/src/registerCare/report.js +0 -139
  266. package/dist/legacy-root-azm/src/registerCare/smartComments.d.ts +0 -5
  267. package/dist/legacy-root-azm/src/registerCare/smartComments.js +0 -247
  268. package/dist/legacy-root-azm/src/registerCare/sourceText.d.ts +0 -8
  269. package/dist/legacy-root-azm/src/registerCare/sourceText.js +0 -15
  270. package/dist/legacy-root-azm/src/registerCare/summary.d.ts +0 -3
  271. package/dist/legacy-root-azm/src/registerCare/summary.js +0 -492
  272. package/dist/legacy-root-azm/src/registerCare/types.d.ts +0 -154
  273. package/dist/legacy-root-azm/src/registerCare/types.js +0 -1
  274. package/dist/legacy-root-azm/src/semantics/declVisitor.d.ts +0 -5
  275. package/dist/legacy-root-azm/src/semantics/declVisitor.js +0 -11
  276. package/dist/legacy-root-azm/src/semantics/env.d.ts +0 -28
  277. package/dist/legacy-root-azm/src/semantics/env.js +0 -432
  278. package/dist/legacy-root-azm/src/semantics/layout.d.ts +0 -21
  279. package/dist/legacy-root-azm/src/semantics/layout.js +0 -226
  280. package/dist/legacy-root-azm/src/semantics/layoutCastFold.d.ts +0 -22
  281. package/dist/legacy-root-azm/src/semantics/layoutCastFold.js +0 -118
  282. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.d.ts +0 -2
  283. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.js +0 -4
  284. package/dist/legacy-root-azm/src/semantics/typeQueries.d.ts +0 -31
  285. package/dist/legacy-root-azm/src/semantics/typeQueries.js +0 -124
  286. package/dist/legacy-root-azm/src/sourceIncludeExpansion.d.ts +0 -17
  287. package/dist/legacy-root-azm/src/sourceIncludeExpansion.js +0 -124
  288. package/dist/legacy-root-azm/src/sourceIncludePaths.d.ts +0 -1
  289. package/dist/legacy-root-azm/src/sourceIncludePaths.js +0 -12
  290. package/dist/legacy-root-azm/src/sourceLoader.d.ts +0 -15
  291. package/dist/legacy-root-azm/src/sourceLoader.js +0 -118
  292. package/dist/legacy-root-azm/src/z80/effects.d.ts +0 -3
  293. package/dist/legacy-root-azm/src/z80/effects.js +0 -516
  294. package/dist/legacy-root-azm/src/z80/encode.d.ts +0 -10
  295. package/dist/legacy-root-azm/src/z80/encode.js +0 -412
  296. package/dist/legacy-root-azm/src/z80/encodeAlu.d.ts +0 -7
  297. package/dist/legacy-root-azm/src/z80/encodeAlu.js +0 -219
  298. package/dist/legacy-root-azm/src/z80/encodeBitOps.d.ts +0 -7
  299. package/dist/legacy-root-azm/src/z80/encodeBitOps.js +0 -123
  300. package/dist/legacy-root-azm/src/z80/encodeContext.d.ts +0 -29
  301. package/dist/legacy-root-azm/src/z80/encodeContext.js +0 -1
  302. package/dist/legacy-root-azm/src/z80/encodeControl.d.ts +0 -26
  303. package/dist/legacy-root-azm/src/z80/encodeControl.js +0 -180
  304. package/dist/legacy-root-azm/src/z80/encodeCoreOps.d.ts +0 -7
  305. package/dist/legacy-root-azm/src/z80/encodeCoreOps.js +0 -131
  306. package/dist/legacy-root-azm/src/z80/encodeIo.d.ts +0 -9
  307. package/dist/legacy-root-azm/src/z80/encodeIo.js +0 -128
  308. package/dist/legacy-root-azm/src/z80/encodeLd.d.ts +0 -13
  309. package/dist/legacy-root-azm/src/z80/encodeLd.js +0 -273
  310. package/dist/legacy-root-azm/src/z80/encoderRegistry.d.ts +0 -13
  311. package/dist/legacy-root-azm/src/z80/encoderRegistry.js +0 -169
  312. package/dist/src/outputs/write-listing.d.ts +0 -2
  313. package/dist/src/outputs/write-listing.js +0 -79
@@ -1,128 +0,0 @@
1
- import { DiagnosticIds } from '../diagnosticTypes.js';
2
- export function createAssemblerFlowSetupHelpers({ diagnostics, diagAt, diagAtWithId, getCurrentCodeSegmentTag, setCurrentCodeSegmentTag, taken, traceLabel, pending, getCodeOffset, emitInstr, generatedLabelCounterRef, formatAsmOperandForOpDiag, }) {
3
- const currentOpExpansionFrame = (opExpansionStack) => opExpansionStack.length > 0 ? opExpansionStack[opExpansionStack.length - 1] : undefined;
4
- const rootOpExpansionFrame = (opExpansionStack) => opExpansionStack.length > 0 ? opExpansionStack[0] : undefined;
5
- const currentMacroCallSiteSpan = (opExpansionStack) => rootOpExpansionFrame(opExpansionStack)?.callSiteSpan;
6
- const formatInstructionForOpExpansionDiag = (inst) => {
7
- const ops = inst.operands.map(formatAsmOperandForOpDiag).join(', ');
8
- return ops.length > 0 ? `${inst.head} ${ops}` : inst.head;
9
- };
10
- const appendInvalidOpExpansionDiagnostic = (inst, diagnosticsStart, opExpansionStack) => {
11
- const frame = currentOpExpansionFrame(opExpansionStack);
12
- if (!frame)
13
- return;
14
- const rootFrame = rootOpExpansionFrame(opExpansionStack);
15
- const newDiagnostics = diagnostics.slice(diagnosticsStart);
16
- const hasConcreteInstructionFailure = newDiagnostics.some((d) => d.severity === 'error' &&
17
- (d.id === DiagnosticIds.EncodeError || d.id === DiagnosticIds.EmitError));
18
- if (!hasConcreteInstructionFailure)
19
- return;
20
- if (newDiagnostics.some((d) => d.id === DiagnosticIds.OpInvalidExpansion ||
21
- d.id === DiagnosticIds.OpArityMismatch ||
22
- d.id === DiagnosticIds.OpNoMatchingOverload ||
23
- d.id === DiagnosticIds.OpAmbiguousOverload ||
24
- d.id === DiagnosticIds.OpExpansionCycle)) {
25
- return;
26
- }
27
- const expansionChain = opExpansionStack
28
- .map((entry) => `${entry.name} (${entry.declSpan.file}:${entry.declSpan.start.line})`)
29
- .join(' -> ');
30
- diagAtWithId(diagnostics, rootFrame?.callSiteSpan ?? frame.callSiteSpan, DiagnosticIds.OpInvalidExpansion, `Invalid op expansion in "${frame.name}" at call site.\n` +
31
- `expanded instruction: ${formatInstructionForOpExpansionDiag(inst)}\n` +
32
- `op definition: ${frame.declSpan.file}:${frame.declSpan.start.line}\n` +
33
- `expansion chain: ${expansionChain}`);
34
- };
35
- const sourceTagForSpan = (span, opExpansionStack) => {
36
- const macroCallSite = currentMacroCallSiteSpan(opExpansionStack);
37
- const taggedSpan = macroCallSite ?? span;
38
- return {
39
- file: taggedSpan.file,
40
- line: taggedSpan.start.line,
41
- column: taggedSpan.start.column,
42
- kind: macroCallSite ? 'macro' : 'code',
43
- confidence: 'high',
44
- };
45
- };
46
- const withCodeSourceTag = (tag, fn) => {
47
- const prev = getCurrentCodeSegmentTag();
48
- setCurrentCodeSegmentTag(tag);
49
- try {
50
- return fn();
51
- }
52
- finally {
53
- setCurrentCodeSegmentTag(prev);
54
- }
55
- };
56
- const syncFromFlow = (flow, tracked) => {
57
- tracked.delta = flow.spDelta;
58
- tracked.valid = flow.spValid;
59
- tracked.invalid = flow.spInvalidDueToMutation;
60
- };
61
- const syncToFlow = (flow, tracked) => {
62
- flow.spDelta = tracked.delta;
63
- flow.spValid = tracked.valid;
64
- flow.spInvalidDueToMutation = tracked.invalid;
65
- };
66
- const newHiddenLabel = (prefix) => {
67
- let n = `${prefix}_${generatedLabelCounterRef.current++}`;
68
- while (taken.has(n)) {
69
- n = `${prefix}_${generatedLabelCounterRef.current++}`;
70
- }
71
- return n;
72
- };
73
- const defineCodeLabel = (name, span, scope) => {
74
- if (taken.has(name)) {
75
- diagAt(diagnostics, span, `Duplicate symbol name "${name}".`);
76
- return;
77
- }
78
- taken.add(name);
79
- traceLabel(getCodeOffset(), name, span);
80
- pending.push({
81
- kind: 'label',
82
- name,
83
- placement: 'code',
84
- offset: getCodeOffset(),
85
- file: span.file,
86
- line: span.start.line,
87
- scope,
88
- });
89
- };
90
- const emitVirtualReg16Transfer = (asmItem) => {
91
- if (asmItem.head.toLowerCase() !== 'ld' || asmItem.operands.length !== 2)
92
- return false;
93
- const dstOp = asmItem.operands[0];
94
- const srcOp = asmItem.operands[1];
95
- if (dstOp.kind !== 'Reg' || srcOp.kind !== 'Reg')
96
- return false;
97
- const dst = dstOp.name.toUpperCase();
98
- const src = srcOp.name.toUpperCase();
99
- const supported = new Set(['BC', 'DE', 'HL']);
100
- if (!supported.has(dst) || !supported.has(src) || dst === src)
101
- return false;
102
- const hi = (reg16) => reg16 === 'BC' ? 'B' : reg16 === 'DE' ? 'D' : 'H';
103
- const lo = (reg16) => reg16 === 'BC' ? 'C' : reg16 === 'DE' ? 'E' : 'L';
104
- emitInstr('ld', [
105
- { kind: 'Reg', span: asmItem.span, name: hi(dst) },
106
- { kind: 'Reg', span: asmItem.span, name: hi(src) },
107
- ], asmItem.span);
108
- emitInstr('ld', [
109
- { kind: 'Reg', span: asmItem.span, name: lo(dst) },
110
- { kind: 'Reg', span: asmItem.span, name: lo(src) },
111
- ], asmItem.span);
112
- return true;
113
- };
114
- return {
115
- currentOpExpansionFrame,
116
- rootOpExpansionFrame,
117
- currentMacroCallSiteSpan,
118
- formatInstructionForOpExpansionDiag,
119
- appendInvalidOpExpansionDiagnostic,
120
- sourceTagForSpan,
121
- withCodeSourceTag,
122
- syncFromFlow,
123
- syncToFlow,
124
- newHiddenLabel,
125
- defineCodeLabel,
126
- emitVirtualReg16Transfer,
127
- };
128
- }
@@ -1,151 +0,0 @@
1
- import type { Diagnostic, DiagnosticId } from '../diagnosticTypes.js';
2
- import type { AsmInstructionNode, AsmOperandNode, EaExprNode, ImmExprNode, OpDeclNode, SourceSpan, TypeExprNode } from '../frontend/ast.js';
3
- import type { CompileEnv } from '../semantics/env.js';
4
- import type { PendingSymbol, ResolvedArrayType, SourceSegmentTag } from './loweringTypes.js';
5
- import type { OpOverloadSelection } from './opMatching.js';
6
- import type { EaResolution } from './eaResolution.js';
7
- import type { AggregateType, ScalarKind } from '../semantics/typeQueries.js';
8
- export type AssemblerLoweringDiagnosticsContext = {
9
- /** Set by: emit/context construction. Mutated by: flow setup, op call expansion, asm instruction lowering, instruction-stream lowering. */
10
- readonly diagnostics: Diagnostic[];
11
- /** Set by: emit/context construction. Used by: flow setup. */
12
- readonly diag: (diagnostics: Diagnostic[], file: string, message: string) => void;
13
- /** Set by: emit/context construction. Used by: flow setup, op call expansion, asm instruction lowering, instruction-stream lowering. */
14
- readonly diagAt: (diagnostics: Diagnostic[], span: SourceSpan, message: string) => void;
15
- /** Set by: emit/context construction. Used by: flow setup, op call expansion. */
16
- readonly diagAtWithId: (diagnostics: Diagnostic[], span: SourceSpan, id: DiagnosticId, message: string) => void;
17
- /** Set by: emit/context construction. Used by: op call expansion, asm instruction lowering. */
18
- readonly diagAtWithSeverityAndId: (diagnostics: Diagnostic[], span: SourceSpan, id: DiagnosticId, severity: 'error' | 'warning', message: string) => void;
19
- /** Set by: emit/context construction. Used by: op call expansion. */
20
- readonly warnAt: (diagnostics: Diagnostic[], span: SourceSpan, message: string) => void;
21
- };
22
- export type AssemblerLoweringSymbolContext = {
23
- /** Set by: emit/context construction. Mutated by: flow setup. Used by: flow setup. */
24
- readonly taken: Set<string>;
25
- /** Set by: emit/context construction. Mutated by: flow setup, instruction-stream lowering. Used by: flow setup, instruction-stream lowering. */
26
- readonly pending: PendingSymbol[];
27
- /** Set by: emit/context construction. Used by: flow setup. */
28
- readonly traceComment: (offset: number, text: string) => void;
29
- /** Set by: emit/context construction. Used by: flow setup, instruction-stream lowering. */
30
- readonly traceLabel: (offset: number, name: string, span?: SourceSpan) => void;
31
- /** Set by: emit/context construction. Mutated while lowering ASM source instructions and op expansions. */
32
- readonly currentCodeSegmentTagRef: {
33
- current: SourceSegmentTag | undefined;
34
- };
35
- /** Set by: emit/context construction. Mutated by: flow setup. Used by: flow setup. */
36
- readonly generatedLabelCounterRef: {
37
- current: number;
38
- };
39
- };
40
- export type AssemblerLoweringSpTrackingContext = {
41
- /** Set by: emit/context construction. Used by: flow setup. */
42
- readonly bindSpTracking: (callbacks?: {
43
- applySpTracking: (headRaw: string, operands: AsmOperandNode[]) => void;
44
- invalidateSpTracking: () => void;
45
- } | undefined) => void;
46
- };
47
- export type AssemblerLoweringEmissionContext = {
48
- /** Set by: emit/context construction. Used by: flow setup. */
49
- readonly getCodeOffset: () => number;
50
- /** Set by: emit/context construction. Used by: asm preparation, flow setup, op call expansion, asm instruction lowering, instruction-stream lowering. */
51
- readonly emitInstr: (head: string, operands: AsmOperandNode[], span: SourceSpan) => boolean;
52
- /** Set by: emit/context construction. Used by: flow setup, op call expansion, asm instruction lowering. */
53
- readonly emitRawCodeBytes: (bs: Uint8Array, file: string, traceText: string) => void;
54
- /** Set by: emit/context construction. Used by: flow setup and op expansion. */
55
- readonly emitAbs16Fixup: (opcode: number, baseLower: string, addend: number, span: SourceSpan, asmText?: string) => void;
56
- /** Set by: emit/context construction. Used by: asm instruction lowering. */
57
- readonly emitAbs16FixupPrefixed: (prefix: number, opcode2: number, baseLower: string, addend: number, span: SourceSpan, asmText?: string) => void;
58
- /** Set by: emit/context construction. Used by: asm instruction lowering. */
59
- readonly emitRel8Fixup: (opcode: number, baseLower: string, addend: number, span: SourceSpan, mnemonic: string) => void;
60
- };
61
- export type AssemblerLoweringConditionContext = {
62
- /** Set by: emit/context construction. Used by: flow setup and asm instruction lowering. */
63
- readonly conditionOpcodeFromName: (name: string) => number | undefined;
64
- /** Set by: emit/context construction. Used by: flow setup. */
65
- readonly conditionNameFromOpcode: (opcode: number) => string | undefined;
66
- /** Set by: emit/context construction. Used by: asm instruction lowering. */
67
- readonly callConditionOpcodeFromName: (name: string) => number | undefined;
68
- /** Set by: emit/context construction. Used by: asm instruction lowering. */
69
- readonly jrConditionOpcodeFromName: (name: string) => number | undefined;
70
- /** Set by: emit/context construction. Used by: asm instruction lowering. */
71
- readonly conditionOpcode: (operand: AsmOperandNode) => number | undefined;
72
- /** Set by: emit/context construction. Used by: flow setup and op expansion. */
73
- readonly inverseConditionName: (name: string) => string | undefined;
74
- /** Set by: emit/context construction. Used by: asm preparation and asm instruction lowering. */
75
- readonly symbolicTargetFromExpr: (expr: ImmExprNode) => {
76
- baseLower: string;
77
- addend: number;
78
- } | undefined;
79
- };
80
- export type AssemblerLoweringTypeContext = {
81
- /** Set by: emit/context construction. Used by: asm preparation, flow setup, op call expansion. */
82
- readonly evalImmExpr: (expr: ImmExprNode, env: CompileEnv, diagnostics: Diagnostic[]) => number | undefined;
83
- /** Set by: emit/context construction. Used by: asm preparation, flow setup, op call expansion. */
84
- readonly env: CompileEnv;
85
- /** Set by: emit/context construction. Used by: asm preparation, flow setup, op call expansion. */
86
- readonly resolveScalarKind: (typeExpr: TypeExprNode) => ScalarKind | undefined;
87
- /** Set by: emit/context construction. Used by: flow setup (layout pointer symbols). */
88
- readonly resolveAggregateType: (typeExpr: TypeExprNode) => AggregateType | undefined;
89
- /** Set by: emit/context construction. Used by: flow setup and op expansion. */
90
- readonly resolveEaTypeExpr: (ea: EaExprNode) => TypeExprNode | undefined;
91
- /** Set by: emit/context construction. Used by: op call expansion. */
92
- readonly resolveArrayType: (typeExpr: TypeExprNode, env?: CompileEnv) => ResolvedArrayType | undefined;
93
- /** Set by: emit/context construction. Used by: op call expansion. */
94
- readonly typeDisplay: (typeExpr: TypeExprNode) => string;
95
- /** Set by: emit/context construction. Used by: op call expansion. */
96
- readonly sameTypeShape: (left: TypeExprNode, right: TypeExprNode) => boolean;
97
- };
98
- export type AssemblerLoweringAddressingContext = {
99
- /** Set by: emit/context construction. Used by: asm instruction lowering. */
100
- readonly resolveEa: (ea: EaExprNode, span: SourceSpan) => EaResolution | undefined;
101
- /** Set by: emit/context construction. Used by: asm instruction lowering. */
102
- readonly lowerLdWithEa: (asmItem: AsmInstructionNode) => boolean;
103
- };
104
- export type AssemblerLoweringOpResolutionContext = {
105
- /** Set by: emit/context construction. Used by: op call expansion. */
106
- readonly resolveOpCandidates: (name: string, file: string) => OpDeclNode[] | undefined;
107
- };
108
- export type AssemblerLoweringOpOverloadContext = {
109
- /** Set by: emit/context construction. Used by: flow setup and op expansion. */
110
- readonly formatAsmOperandForOpDiag: (operand: AsmOperandNode) => string;
111
- /** Set by: emit/context construction. Used by: op call expansion. */
112
- readonly selectOpOverload: (overloads: OpDeclNode[], operands: AsmOperandNode[]) => OpOverloadSelection;
113
- };
114
- export type AssemblerLoweringAstUtilityContext = {
115
- /** Set by: emit/context construction. Used by: op call expansion. */
116
- readonly cloneImmExpr: (expr: ImmExprNode) => ImmExprNode;
117
- /** Set by: emit/context construction. Used by: op call expansion. */
118
- readonly cloneEaExpr: (expr: EaExprNode) => EaExprNode;
119
- /** Set by: emit/context construction. Used by: op call expansion. */
120
- readonly cloneOperand: (operand: AsmOperandNode) => AsmOperandNode;
121
- /** Set by: emit/context construction. Used by: op call expansion. */
122
- readonly flattenEaDottedName: (ea: EaExprNode) => string | undefined;
123
- /** Set by: emit/context construction. Used by: op call expansion. */
124
- readonly normalizeFixedToken: (operand: AsmOperandNode) => string | undefined;
125
- };
126
- export type AssemblerLoweringRegisterContext = {
127
- /** Set by: emit/context construction. Used by: flow setup and op expansion. */
128
- readonly reg8: Set<string>;
129
- /** Set by: emit/context construction. Used by: op call expansion and asm instruction lowering. */
130
- readonly reg16: Set<string>;
131
- };
132
- export type AssemblerLoweringSharedContext = AssemblerLoweringDiagnosticsContext & AssemblerLoweringSymbolContext & AssemblerLoweringSpTrackingContext & AssemblerLoweringEmissionContext & AssemblerLoweringConditionContext & AssemblerLoweringTypeContext & AssemblerLoweringAddressingContext & AssemblerLoweringOpResolutionContext & AssemblerLoweringOpOverloadContext & AssemblerLoweringAstUtilityContext & AssemblerLoweringRegisterContext;
133
- /**
134
- * The named slices that merge into {@link AssemblerLoweringSharedContext}. Emit wiring
135
- * (`emitContextBuilder`) and phase code pass these groups instead of a single flat field bag (#1316).
136
- */
137
- export type AssemblerLoweringComponentContexts = {
138
- readonly diagnostics: AssemblerLoweringDiagnosticsContext;
139
- readonly symbols: AssemblerLoweringSymbolContext;
140
- readonly spTracking: AssemblerLoweringSpTrackingContext;
141
- readonly emission: AssemblerLoweringEmissionContext;
142
- readonly conditions: AssemblerLoweringConditionContext;
143
- readonly types: AssemblerLoweringTypeContext;
144
- readonly addressing: AssemblerLoweringAddressingContext;
145
- readonly opResolution: AssemblerLoweringOpResolutionContext;
146
- readonly opOverload: AssemblerLoweringOpOverloadContext;
147
- readonly astUtilities: AssemblerLoweringAstUtilityContext;
148
- readonly registers: AssemblerLoweringRegisterContext;
149
- };
150
- /** Merge named sub-contexts into the flat intersection used at lowering boundaries. */
151
- export declare function mergeAssemblerLoweringSharedContext(parts: Readonly<AssemblerLoweringComponentContexts>): AssemblerLoweringSharedContext;
@@ -1,16 +0,0 @@
1
- /** Merge named sub-contexts into the flat intersection used at lowering boundaries. */
2
- export function mergeAssemblerLoweringSharedContext(parts) {
3
- return {
4
- ...parts.diagnostics,
5
- ...parts.symbols,
6
- ...parts.spTracking,
7
- ...parts.emission,
8
- ...parts.conditions,
9
- ...parts.types,
10
- ...parts.addressing,
11
- ...parts.opResolution,
12
- ...parts.opOverload,
13
- ...parts.astUtilities,
14
- ...parts.registers,
15
- };
16
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Split {@link AssemblerLoweringSharedContext} into named slices (#1316).
3
- * Lives in its own module so {@link import('./assemblerLoweringPhases.js')} can import without a
4
- * circular runtime dependency on {@link import('./assemblerLoweringContext.js')}.
5
- */
6
- import type { AssemblerLoweringComponentContexts, AssemblerLoweringSharedContext } from './assemblerLoweringContext.js';
7
- export declare function splitAssemblerLoweringSharedContext(shared: AssemblerLoweringSharedContext): AssemblerLoweringComponentContexts;
@@ -1,75 +0,0 @@
1
- /**
2
- * Split {@link AssemblerLoweringSharedContext} into named slices (#1316).
3
- * Lives in its own module so {@link import('./assemblerLoweringPhases.js')} can import without a
4
- * circular runtime dependency on {@link import('./assemblerLoweringContext.js')}.
5
- */
6
- export function splitAssemblerLoweringSharedContext(shared) {
7
- return {
8
- diagnostics: {
9
- diagnostics: shared.diagnostics,
10
- diag: shared.diag,
11
- diagAt: shared.diagAt,
12
- diagAtWithId: shared.diagAtWithId,
13
- diagAtWithSeverityAndId: shared.diagAtWithSeverityAndId,
14
- warnAt: shared.warnAt,
15
- },
16
- symbols: {
17
- taken: shared.taken,
18
- pending: shared.pending,
19
- traceComment: shared.traceComment,
20
- traceLabel: shared.traceLabel,
21
- currentCodeSegmentTagRef: shared.currentCodeSegmentTagRef,
22
- generatedLabelCounterRef: shared.generatedLabelCounterRef,
23
- },
24
- spTracking: { bindSpTracking: shared.bindSpTracking },
25
- emission: {
26
- getCodeOffset: shared.getCodeOffset,
27
- emitInstr: shared.emitInstr,
28
- emitRawCodeBytes: shared.emitRawCodeBytes,
29
- emitAbs16Fixup: shared.emitAbs16Fixup,
30
- emitAbs16FixupPrefixed: shared.emitAbs16FixupPrefixed,
31
- emitRel8Fixup: shared.emitRel8Fixup,
32
- },
33
- conditions: {
34
- conditionOpcodeFromName: shared.conditionOpcodeFromName,
35
- conditionNameFromOpcode: shared.conditionNameFromOpcode,
36
- callConditionOpcodeFromName: shared.callConditionOpcodeFromName,
37
- jrConditionOpcodeFromName: shared.jrConditionOpcodeFromName,
38
- conditionOpcode: shared.conditionOpcode,
39
- inverseConditionName: shared.inverseConditionName,
40
- symbolicTargetFromExpr: shared.symbolicTargetFromExpr,
41
- },
42
- types: {
43
- evalImmExpr: shared.evalImmExpr,
44
- env: shared.env,
45
- resolveScalarKind: shared.resolveScalarKind,
46
- resolveAggregateType: shared.resolveAggregateType,
47
- resolveEaTypeExpr: shared.resolveEaTypeExpr,
48
- resolveArrayType: shared.resolveArrayType,
49
- typeDisplay: shared.typeDisplay,
50
- sameTypeShape: shared.sameTypeShape,
51
- },
52
- addressing: {
53
- resolveEa: shared.resolveEa,
54
- lowerLdWithEa: shared.lowerLdWithEa,
55
- },
56
- opResolution: {
57
- resolveOpCandidates: shared.resolveOpCandidates,
58
- },
59
- opOverload: {
60
- formatAsmOperandForOpDiag: shared.formatAsmOperandForOpDiag,
61
- selectOpOverload: shared.selectOpOverload,
62
- },
63
- astUtilities: {
64
- cloneImmExpr: shared.cloneImmExpr,
65
- cloneEaExpr: shared.cloneEaExpr,
66
- cloneOperand: shared.cloneOperand,
67
- flattenEaDottedName: shared.flattenEaDottedName,
68
- normalizeFixedToken: shared.normalizeFixedToken,
69
- },
70
- registers: {
71
- reg8: shared.reg8,
72
- reg16: shared.reg16,
73
- },
74
- };
75
- }
@@ -1,66 +0,0 @@
1
- import type { SourceSegmentTag } from './loweringTypes.js';
2
- import { createAssemblerFlowSetupHelpers, type FlowState, type OpExpansionFrame } from './assemblerFlowSetup.js';
3
- import { createAsmInstructionStreamHelpers } from './asmInstructionStream.js';
4
- import type { AssemblerLoweringSharedContext } from './assemblerLoweringContext.js';
5
- export interface AssemblerInstructionSetup {
6
- /** Shared assembler-lowering context. */
7
- readonly ctx: AssemblerLoweringSharedContext;
8
- /** Shared diagnostic list. */
9
- readonly diagnostics: AssemblerLoweringSharedContext['diagnostics'];
10
- /** Pending forward symbols. */
11
- readonly pending: AssemblerLoweringSharedContext['pending'];
12
- /** Trace hook for comments. */
13
- readonly traceComment: AssemblerLoweringSharedContext['traceComment'];
14
- /** Trace hook for labels. */
15
- readonly traceLabel: AssemblerLoweringSharedContext['traceLabel'];
16
- /** Registers SP tracking callbacks for asm emission. */
17
- readonly bindSpTracking: AssemblerLoweringSharedContext['bindSpTracking'];
18
- /** Current emitted code offset. */
19
- readonly getCodeOffset: AssemblerLoweringSharedContext['getCodeOffset'];
20
- /** General instruction emitter. */
21
- readonly emitInstr: AssemblerLoweringSharedContext['emitInstr'];
22
- /** Active source segment tag for listing, if any. */
23
- readonly getCurrentCodeSegmentTag: () => SourceSegmentTag | undefined;
24
- /** Sets active source segment tag; `undefined` clears. */
25
- readonly setCurrentCodeSegmentTag: (tag: SourceSegmentTag | undefined) => void;
26
- }
27
- interface AssemblerFlowPhase {
28
- /** SP tracking summary: `invalid` when analysis cannot trust SP. */
29
- readonly trackedSp: {
30
- valid: boolean;
31
- delta: number;
32
- invalid: boolean;
33
- };
34
- /** Nested op-expansion frames for inline op diagnostics. */
35
- readonly opExpansionStack: OpExpansionFrame[];
36
- /** Reads current flow state. */
37
- readonly getFlow: () => FlowState;
38
- /** Replaces flow state (e.g. after branches). */
39
- readonly setFlow: (state: FlowState) => void;
40
- /** Mutable ref to the active flow state. */
41
- readonly flowRef: {
42
- readonly current: FlowState;
43
- };
44
- /** Pulls flow-local flags from `flowRef` into lowering scratch state. */
45
- readonly syncFromFlow: () => void;
46
- /** Pushes lowering scratch state back into `flowRef`. */
47
- readonly syncToFlow: () => void;
48
- /** Emits diagnostic for invalid inline op expansion. */
49
- readonly appendInvalidOpExpansionDiagnostic: ReturnType<typeof createAssemblerFlowSetupHelpers>['appendInvalidOpExpansionDiagnostic'];
50
- /** Maps a source span to a segment tag for tracing. */
51
- readonly sourceTagForSpan: ReturnType<typeof createAssemblerFlowSetupHelpers>['sourceTagForSpan'];
52
- /** Runs a callback with a bound code-source tag. */
53
- readonly withCodeSourceTag: ReturnType<typeof createAssemblerFlowSetupHelpers>['withCodeSourceTag'];
54
- /** Allocates a fresh compiler-generated label name. */
55
- readonly newHiddenLabel: ReturnType<typeof createAssemblerFlowSetupHelpers>['newHiddenLabel'];
56
- /** Defines a code label at the current offset. */
57
- readonly defineCodeLabel: ReturnType<typeof createAssemblerFlowSetupHelpers>['defineCodeLabel'];
58
- /** Virtual 16-bit register move (lowering helper). */
59
- readonly emitVirtualReg16Transfer: ReturnType<typeof createAssemblerFlowSetupHelpers>['emitVirtualReg16Transfer'];
60
- }
61
- export declare function prepareAssemblerInstructionSetupPhase(ctx: AssemblerLoweringSharedContext): AssemblerInstructionSetup;
62
- /** Flow helpers for explicit ASM source. */
63
- export declare function createAsmSourceFlowPhase(setup: AssemblerInstructionSetup): AssemblerFlowPhase;
64
- /** Instruction emitter bundle shared by op bodies and ASM source. */
65
- export declare function createAssemblerInstructionEmitters(setup: AssemblerInstructionSetup, flow: AssemblerFlowPhase): ReturnType<typeof createAsmInstructionStreamHelpers>;
66
- export {};
@@ -1,166 +0,0 @@
1
- import { evalImmExpr as evalImmExprWithEnv } from '../semantics/env.js';
2
- import { createAsmInstructionLoweringHelpers } from './asmInstructionLowering.js';
3
- import { createAssemblerFlowSetupHelpers, } from './assemblerFlowSetup.js';
4
- import { createAsmInstructionStreamHelpers } from './asmInstructionStream.js';
5
- import { splitAssemblerLoweringSharedContext } from './assemblerLoweringContextSplit.js';
6
- import { placementAddressAtOffset } from './asmDirectiveTraversal.js';
7
- export function prepareAssemblerInstructionSetupPhase(ctx) {
8
- const { diagnostics, pending, traceComment, traceLabel, currentCodeSegmentTagRef, bindSpTracking, getCodeOffset, emitInstr: emitInstrBase, } = ctx;
9
- let currentCodeSegmentTag = currentCodeSegmentTagRef.current;
10
- const setCurrentCodeSegmentTag = (tag) => {
11
- currentCodeSegmentTag = tag;
12
- currentCodeSegmentTagRef.current = tag;
13
- };
14
- const emitInstr = emitInstrBase;
15
- return {
16
- ctx,
17
- diagnostics,
18
- pending,
19
- traceComment,
20
- traceLabel,
21
- bindSpTracking,
22
- getCodeOffset,
23
- emitInstr,
24
- getCurrentCodeSegmentTag: () => currentCodeSegmentTag,
25
- setCurrentCodeSegmentTag,
26
- };
27
- }
28
- function buildAssemblerFlowPhase(setup, flowInit) {
29
- const { ctx: { diagnostics, diagAt, diagAtWithId, formatAsmOperandForOpDiag, generatedLabelCounterRef, taken, }, pending, traceLabel, getCodeOffset, emitInstr, getCurrentCodeSegmentTag, setCurrentCodeSegmentTag, } = setup;
30
- const { trackedSp } = flowInit;
31
- let flow = {
32
- reachable: true,
33
- spDelta: 0,
34
- spValid: true,
35
- spInvalidDueToMutation: false,
36
- };
37
- const flowRef = {
38
- get current() {
39
- return flow;
40
- },
41
- };
42
- const opExpansionStack = [];
43
- const { appendInvalidOpExpansionDiagnostic, sourceTagForSpan, withCodeSourceTag, syncFromFlow: syncFromFlowBase, syncToFlow: syncToFlowBase, newHiddenLabel, defineCodeLabel, emitVirtualReg16Transfer, } = createAssemblerFlowSetupHelpers({
44
- diagnostics,
45
- diagAt,
46
- diagAtWithId,
47
- getCurrentCodeSegmentTag,
48
- setCurrentCodeSegmentTag,
49
- taken,
50
- traceLabel,
51
- pending,
52
- getCodeOffset,
53
- emitInstr,
54
- generatedLabelCounterRef,
55
- formatAsmOperandForOpDiag,
56
- });
57
- const syncFromFlow = () => {
58
- syncFromFlowBase(flow, trackedSp);
59
- };
60
- const syncToFlow = () => {
61
- syncToFlowBase(flow, trackedSp);
62
- };
63
- return {
64
- trackedSp,
65
- opExpansionStack,
66
- getFlow: () => flow,
67
- setFlow: (state) => {
68
- flow = state;
69
- },
70
- flowRef,
71
- syncFromFlow,
72
- syncToFlow,
73
- appendInvalidOpExpansionDiagnostic,
74
- sourceTagForSpan,
75
- withCodeSourceTag,
76
- newHiddenLabel,
77
- defineCodeLabel,
78
- emitVirtualReg16Transfer,
79
- };
80
- }
81
- /** Flow helpers for explicit ASM source. */
82
- export function createAsmSourceFlowPhase(setup) {
83
- setup.bindSpTracking(undefined);
84
- return buildAssemblerFlowPhase(setup, {
85
- trackedSp: { delta: 0, valid: true, invalid: false },
86
- });
87
- }
88
- /** Instruction emitter bundle shared by op bodies and ASM source. */
89
- export function createAssemblerInstructionEmitters(setup, flow) {
90
- const fp = splitAssemblerLoweringSharedContext(setup.ctx);
91
- const { emitInstr, getCurrentCodeSegmentTag, setCurrentCodeSegmentTag } = setup;
92
- const diagnostics = fp.diagnostics.diagnostics;
93
- const currentInstructionAddress = () => {
94
- const maybeLoweringContext = setup.ctx;
95
- if (maybeLoweringContext.baseExprs) {
96
- return placementAddressAtOffset(maybeLoweringContext, 'code', setup.getCodeOffset()) ?? setup.getCodeOffset();
97
- }
98
- return setup.getCodeOffset();
99
- };
100
- const { lowerAsmInstructionDispatcher } = createAsmInstructionLoweringHelpers({
101
- ...fp.diagnostics,
102
- ...fp.emission,
103
- ...fp.conditions,
104
- ...fp.types,
105
- ...fp.addressing,
106
- ...fp.opResolution,
107
- ...fp.opOverload,
108
- ...fp.astUtilities,
109
- ...fp.registers,
110
- emitInstr,
111
- symbolicTargetFromExpr: fp.conditions.symbolicTargetFromExpr,
112
- evalImmExpr: (expr) => fp.types.evalImmExpr(expr, fp.types.env, diagnostics),
113
- currentAddress: currentInstructionAddress,
114
- evalCurrentTarget: (expr) => {
115
- const currentLocation = currentInstructionAddress();
116
- const target = evalImmExprWithEnv(expr, fp.types.env, diagnostics, { currentLocation });
117
- return target;
118
- },
119
- resolveRawAliasTargetName: () => undefined,
120
- resolveEa: fp.addressing.resolveEa,
121
- diagIfRetStackImbalanced: (span, mnemonic) => {
122
- if (flow.trackedSp.valid && flow.trackedSp.delta !== 0) {
123
- fp.diagnostics.diagAt(diagnostics, span, `${mnemonic ?? 'ret'} with non-zero tracked stack delta (${flow.trackedSp.delta}); assembler stack is imbalanced.`);
124
- return;
125
- }
126
- return;
127
- },
128
- diagIfCallStackUnverifiable: (options) => {
129
- void options;
130
- },
131
- emitVirtualReg16Transfer: flow.emitVirtualReg16Transfer,
132
- syncToFlow: flow.syncToFlow,
133
- flowRef: flow.flowRef,
134
- });
135
- return createAsmInstructionStreamHelpers({
136
- diagnostics,
137
- asmItemSpanSourceTag: (span) => flow.sourceTagForSpan(span, flow.opExpansionStack),
138
- getCurrentCodeSegmentTag,
139
- setCurrentCodeSegmentTag,
140
- appendInvalidOpExpansionDiagnostic: flow.appendInvalidOpExpansionDiagnostic,
141
- addressing: {
142
- flattenEaDottedName: fp.astUtilities.flattenEaDottedName,
143
- },
144
- diagAt: fp.diagnostics.diagAt,
145
- diagAtWithSeverityAndId: fp.diagnostics.diagAtWithSeverityAndId,
146
- env: fp.types.env,
147
- emitInstr,
148
- emitAbs16Fixup: fp.emission.emitAbs16Fixup,
149
- syncToFlow: flow.syncToFlow,
150
- resolveOpCandidates: fp.opResolution.resolveOpCandidates,
151
- opExpansionStack: flow.opExpansionStack,
152
- diagAtWithId: fp.diagnostics.diagAtWithId,
153
- formatAsmOperandForOpDiag: (operand) => fp.opOverload.formatAsmOperandForOpDiag(operand) ?? '?',
154
- selectOpOverload: fp.opOverload.selectOpOverload,
155
- cloneImmExpr: fp.astUtilities.cloneImmExpr,
156
- cloneEaExpr: fp.astUtilities.cloneEaExpr,
157
- cloneOperand: fp.astUtilities.cloneOperand,
158
- normalizeFixedToken: fp.astUtilities.normalizeFixedToken,
159
- inverseConditionName: fp.conditions.inverseConditionName,
160
- newHiddenLabel: flow.newHiddenLabel,
161
- lowerAsmInstructionDispatcher,
162
- defineCodeLabel: flow.defineCodeLabel,
163
- flowRef: flow.flowRef,
164
- syncFromFlow: flow.syncFromFlow,
165
- });
166
- }
@@ -1,7 +0,0 @@
1
- import type { AddressRange, EmittedSourceSegment } from '../formats/types.js';
2
- type LayoutDiag = (message: string) => void;
3
- export declare function alignTo(n: number, alignment: number): number;
4
- export declare function writeBytePlacement(base: number, byteOffsets: Map<number, number>, bytes: Map<number, number>, report: LayoutDiag): void;
5
- export declare function computeWrittenRange(bytes: Map<number, number>): AddressRange;
6
- export declare function rebaseCodeSourceSegments(codeBase: number, segments: EmittedSourceSegment[]): EmittedSourceSegment[];
7
- export {};
@@ -1,37 +0,0 @@
1
- export function alignTo(n, alignment) {
2
- return alignment <= 0 ? n : Math.ceil(n / alignment) * alignment;
3
- }
4
- export function writeBytePlacement(base, byteOffsets, bytes, report) {
5
- for (const [offset, value] of byteOffsets) {
6
- const addr = base + offset;
7
- if (addr < 0 || addr > 0xffff) {
8
- report(`Emitted byte address out of range: ${addr}.`);
9
- continue;
10
- }
11
- if (bytes.has(addr)) {
12
- report(`Byte overlap at address ${addr}.`);
13
- continue;
14
- }
15
- bytes.set(addr, value);
16
- }
17
- }
18
- export function computeWrittenRange(bytes) {
19
- let min = Number.POSITIVE_INFINITY;
20
- let max = Number.NEGATIVE_INFINITY;
21
- for (const addr of bytes.keys()) {
22
- min = Math.min(min, addr);
23
- max = Math.max(max, addr);
24
- }
25
- return Number.isFinite(min) && Number.isFinite(max)
26
- ? { start: min, end: max + 1 }
27
- : { start: 0, end: 0 };
28
- }
29
- export function rebaseCodeSourceSegments(codeBase, segments) {
30
- return segments
31
- .map((segment) => ({
32
- ...segment,
33
- start: codeBase + segment.start,
34
- end: codeBase + segment.end,
35
- }))
36
- .filter((segment) => segment.start >= 0 && segment.end <= 0x10000 && segment.end > segment.start);
37
- }