@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,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 {};