@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,175 +0,0 @@
1
- export function createOpSubstitutionHelpers(ctx) {
2
- const substituteOffsetPath = (path, substituteImmExpr) => ({
3
- ...path,
4
- steps: path.steps.map((step) => step.kind === 'OffsetIndex' ? { ...step, expr: substituteImmExpr(step.expr) } : { ...step }),
5
- });
6
- const bindingAsImmExpr = (bound, span) => {
7
- if (!bound)
8
- return undefined;
9
- if (bound.kind === 'Imm')
10
- return ctx.cloneImmExpr(bound.expr);
11
- if (bound.kind !== 'Ea')
12
- return undefined;
13
- const name = ctx.flattenEaDottedName(bound.expr);
14
- if (!name || !ctx.env.enums.has(name))
15
- return undefined;
16
- return { kind: 'ImmName', span, name };
17
- };
18
- const substituteImm = (expr) => {
19
- if (expr.kind === 'ImmName') {
20
- const bound = ctx.bindings.get(expr.name.toLowerCase());
21
- const immBound = bindingAsImmExpr(bound, expr.span);
22
- if (immBound)
23
- return immBound;
24
- return { ...expr };
25
- }
26
- if (expr.kind === 'ImmOffset') {
27
- return { ...expr, path: substituteOffsetPath(expr.path, substituteImm) };
28
- }
29
- if (expr.kind === 'ImmUnary')
30
- return { ...expr, expr: substituteImm(expr.expr) };
31
- if (expr.kind === 'ImmBinary') {
32
- return {
33
- ...expr,
34
- left: substituteImm(expr.left),
35
- right: substituteImm(expr.right),
36
- };
37
- }
38
- return { ...expr };
39
- };
40
- const substituteOperand = (operand) => {
41
- if (operand.kind === 'Imm' && operand.expr.kind === 'ImmName') {
42
- const bound = ctx.bindings.get(operand.expr.name.toLowerCase());
43
- const immBound = bindingAsImmExpr(bound, operand.span);
44
- if (immBound)
45
- return { kind: 'Imm', span: operand.span, expr: immBound };
46
- if (bound)
47
- return ctx.cloneOperand(bound);
48
- return { ...operand, expr: substituteImm(operand.expr) };
49
- }
50
- if (operand.kind === 'Imm')
51
- return { ...operand, expr: substituteImm(operand.expr) };
52
- if (operand.kind === 'PortImm8') {
53
- return { ...operand, expr: substituteImm(operand.expr) };
54
- }
55
- if ((operand.kind === 'Ea' || operand.kind === 'Mem') && operand.expr.kind === 'EaName') {
56
- const bound = ctx.bindings.get(operand.expr.name.toLowerCase());
57
- if (bound?.kind === 'Ea')
58
- return ctx.cloneOperand(bound);
59
- if (bound?.kind === 'Reg') {
60
- return {
61
- ...operand,
62
- expr: { kind: 'EaName', span: operand.expr.span, name: bound.name },
63
- };
64
- }
65
- if (bound?.kind === 'Imm' && bound.expr.kind === 'ImmName') {
66
- return {
67
- ...operand,
68
- expr: { kind: 'EaName', span: operand.expr.span, name: bound.expr.name },
69
- };
70
- }
71
- return ctx.cloneOperand(operand);
72
- }
73
- return ctx.cloneOperand(operand);
74
- };
75
- const substituteImmWithOpLabels = (expr, localLabelMap) => {
76
- if (expr.kind === 'ImmName') {
77
- const bound = ctx.bindings.get(expr.name.toLowerCase());
78
- const immBound = bindingAsImmExpr(bound, expr.span);
79
- if (immBound)
80
- return immBound;
81
- const mapped = localLabelMap.get(expr.name.toLowerCase());
82
- if (mapped)
83
- return { kind: 'ImmName', span: expr.span, name: mapped };
84
- return { ...expr };
85
- }
86
- if (expr.kind === 'ImmOffset') {
87
- return {
88
- ...expr,
89
- path: substituteOffsetPath(expr.path, (inner) => substituteImmWithOpLabels(inner, localLabelMap)),
90
- };
91
- }
92
- if (expr.kind === 'ImmUnary') {
93
- return { ...expr, expr: substituteImmWithOpLabels(expr.expr, localLabelMap) };
94
- }
95
- if (expr.kind === 'ImmBinary') {
96
- return {
97
- ...expr,
98
- left: substituteImmWithOpLabels(expr.left, localLabelMap),
99
- right: substituteImmWithOpLabels(expr.right, localLabelMap),
100
- };
101
- }
102
- return { ...expr };
103
- };
104
- const substituteOperandWithOpLabels = (operand, localLabelMap) => {
105
- const substituteEaWithOpLabels = (ea) => {
106
- if (ea.kind === 'EaName') {
107
- const bound = ctx.bindings.get(ea.name.toLowerCase());
108
- if (bound?.kind === 'Ea')
109
- return ctx.cloneEaExpr(bound.expr);
110
- if (bound?.kind === 'Reg') {
111
- return { kind: 'EaName', span: ea.span, name: bound.name };
112
- }
113
- if (bound?.kind === 'Imm' && bound.expr.kind === 'ImmName') {
114
- return { kind: 'EaName', span: ea.span, name: bound.expr.name };
115
- }
116
- const mapped = localLabelMap.get(ea.name.toLowerCase());
117
- if (mapped)
118
- return { kind: 'EaName', span: ea.span, name: mapped };
119
- return { ...ea };
120
- }
121
- if (ea.kind === 'EaImm') {
122
- return { ...ea, expr: substituteImmWithOpLabels(ea.expr, localLabelMap) };
123
- }
124
- if (ea.kind === 'EaField') {
125
- return { ...ea, base: substituteEaWithOpLabels(ea.base) };
126
- }
127
- if (ea.kind === 'EaIndex') {
128
- const index = ea.index.kind === 'IndexEa'
129
- ? { ...ea.index, expr: substituteEaWithOpLabels(ea.index.expr) }
130
- : ea.index.kind === 'IndexImm'
131
- ? { ...ea.index, value: substituteImmWithOpLabels(ea.index.value, localLabelMap) }
132
- : ea.index.kind === 'IndexMemIxIy' && ea.index.disp
133
- ? { ...ea.index, disp: substituteImmWithOpLabels(ea.index.disp, localLabelMap) }
134
- : { ...ea.index };
135
- return { ...ea, base: substituteEaWithOpLabels(ea.base), index };
136
- }
137
- if (ea.kind === 'EaAdd' || ea.kind === 'EaSub') {
138
- return {
139
- ...ea,
140
- base: substituteEaWithOpLabels(ea.base),
141
- offset: substituteImmWithOpLabels(ea.offset, localLabelMap),
142
- };
143
- }
144
- return ctx.cloneEaExpr(ea);
145
- };
146
- if (operand.kind === 'Imm') {
147
- if (operand.expr.kind === 'ImmName') {
148
- const bound = ctx.bindings.get(operand.expr.name.toLowerCase());
149
- const immBound = bindingAsImmExpr(bound, operand.span);
150
- if (immBound)
151
- return { kind: 'Imm', span: operand.span, expr: immBound };
152
- if (bound)
153
- return ctx.cloneOperand(bound);
154
- }
155
- return { ...operand, expr: substituteImmWithOpLabels(operand.expr, localLabelMap) };
156
- }
157
- if (operand.kind === 'Ea' || operand.kind === 'Mem') {
158
- return {
159
- ...operand,
160
- expr: substituteEaWithOpLabels(operand.expr),
161
- };
162
- }
163
- if (operand.kind === 'PortImm8') {
164
- return { ...operand, expr: substituteImmWithOpLabels(operand.expr, localLabelMap) };
165
- }
166
- return substituteOperand(operand);
167
- };
168
- return {
169
- bindingAsImmExpr,
170
- substituteImm,
171
- substituteOperand,
172
- substituteImmWithOpLabels,
173
- substituteOperandWithOpLabels,
174
- };
175
- }
@@ -1,7 +0,0 @@
1
- import type { OpDeclNode } from '../frontend/ast.js';
2
- export interface PrescanResult {
3
- /** Frozen per-file op maps. */
4
- readonly localOpsByFile: ReadonlyMap<string, ReadonlyMap<string, OpDeclNode[]>>;
5
- /** Declared `op` names (lowercased). */
6
- readonly declaredOpNames: ReadonlySet<string>;
7
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,144 +0,0 @@
1
- import type { ImmExprNode, OpDeclNode, ProgramNode, SourceSpan, TypeExprNode } from '../frontend/ast.js';
2
- import type { Diagnostic } from '../diagnosticTypes.js';
3
- import type { AddressRange, EmittedSourceSegment, SymbolEntry } from '../formats/types.js';
4
- import type { CompileEnv } from '../semantics/env.js';
5
- import type { AssemblerLoweringSharedContext } from './assemblerLoweringContext.js';
6
- import type { PendingSymbol, PlacementKind } from './loweringTypes.js';
7
- import type { LoweredAsmItem, LoweredImmExpr } from './loweredAsmTypes.js';
8
- import type { PrescanResult } from './prescanTypes.js';
9
- import type { AggregateType } from '../semantics/typeQueries.js';
10
- export type Context = AssemblerLoweringSharedContext & {
11
- /** Full program AST being lowered. */
12
- program: ProgramNode;
13
- /** Resolved include directories for asset loads. */
14
- includeDirs: string[];
15
- /** Per-file op overload maps. */
16
- localOpsByFile: Map<string, Map<string, OpDeclNode[]>>;
17
- /** All declared `op` names (lowercased). */
18
- declaredOpNames: Set<string>;
19
- /** Symbols with absolute addresses. */
20
- absoluteSymbols: SymbolEntry[];
21
- /** Running symbol table. */
22
- symbols: SymbolEntry[];
23
- /** Data-placement byte map. */
24
- dataBytes: Map<number, number>;
25
- /** Code-placement byte map. */
26
- codeBytes: Map<number, number>;
27
- /** Currently selected code/data placement for emission. */
28
- activePlacementRef: {
29
- current: PlacementKind;
30
- };
31
- /** Next code allocation offset (mutable cursor). */
32
- codeOffsetRef: {
33
- current: number;
34
- };
35
- /** Next data allocation offset. */
36
- dataOffsetRef: {
37
- current: number;
38
- };
39
- /** Optional base imm per placement. */
40
- baseExprs: Partial<Record<PlacementKind, ImmExprNode>>;
41
- /** Advances alignment state for `align` directives. */
42
- advanceAlign: (a: number) => void;
43
- /** Rounds `n` up to `alignment` bytes. */
44
- alignTo: (n: number, alignment: number) => number;
45
- /** Loads a binary asset; `undefined` on failure (diagnostics via `diag`). */
46
- loadBinInput: (file: string, fromPath: string, includeDirs: string[], diag: (file: string, message: string) => void) => Uint8Array | undefined;
47
- /** Structural type resolver for records/unions. */
48
- resolveAggregateType: (type: TypeExprNode) => AggregateType | undefined;
49
- /** Layout size helper; `undefined` if type cannot be sized. */
50
- sizeOfTypeExpr: (typeExpr: TypeExprNode, env: CompileEnv, diagnostics: Diagnostic[]) => number | undefined;
51
- /** Records one lowered asm item for tracing; `span` optional for synthetic items. */
52
- recordLoweredAsmItem: (item: LoweredAsmItem, span?: SourceSpan) => void;
53
- /** Lowers an imm AST node to the trace IR. */
54
- lowerImmExprForLoweredAsm: (expr: ImmExprNode) => LoweredImmExpr;
55
- };
56
- /** Phase 1 — inputs mutated while discovering ops and source-order metadata. */
57
- export type PrescanContext = Pick<Context, 'program' | 'env' | 'diagnostics' | 'localOpsByFile' | 'declaredOpNames' | 'resolveScalarKind'>;
58
- /**
59
- * Phase 2 — full program-lowering context after prescan. Prescan outputs are frozen in
60
- * {@link PrescanResult}; the same map instances remain on `ctx` for lowering (shared refs).
61
- */
62
- export type LoweringContext = Context & {
63
- /** Frozen prescan result; map refs alias `ctx` for shared mutation during lowering. */
64
- readonly prescan: PrescanResult;
65
- };
66
- export type LoweringResult = {
67
- /** Final code-placement size cursor. */
68
- codeOffset: number;
69
- /** Final data-placement size cursor. */
70
- dataOffset: number;
71
- /** Still-unresolved symbols after lowering. */
72
- pending: Context['pending'];
73
- /** Emitted symbol table. */
74
- symbols: Context['symbols'];
75
- /** Absolute-address symbols. */
76
- absoluteSymbols: Context['absoluteSymbols'];
77
- /** Emitted code bytes. */
78
- codeBytes: Context['codeBytes'];
79
- /** Emitted data bytes. */
80
- dataBytes: Context['dataBytes'];
81
- };
82
- /**
83
- * Phase 3 — inputs for placement, fixup resolution, and merged byte emission
84
- * (`finalizeProgramEmission`).
85
- */
86
- export type ProgramEmissionFinalizeContext = {
87
- /** Diagnostics for placement and merge. */
88
- diagnostics: Diagnostic[];
89
- /** File-scoped diagnostic helper. */
90
- diag: (diagnostics: Diagnostic[], file: string, message: string) => void;
91
- /** Primary source path. */
92
- primaryFile: string;
93
- /** Code/data placement base imm expressions. */
94
- baseExprs: Partial<Record<PlacementKind, ImmExprNode>>;
95
- /** Imm evaluator; `undefined` when expression is not const. */
96
- evalImmExpr: (expr: ImmExprNode, env: CompileEnv, diagnostics: Diagnostic[]) => number | undefined;
97
- /** Compile environment. */
98
- env: CompileEnv;
99
- /** Code size after lowering. */
100
- codeOffset: number;
101
- /** Data size after lowering. */
102
- dataOffset: number;
103
- /** Pending symbols. */
104
- pending: PendingSymbol[];
105
- /** Symbol table (may grow during placement). */
106
- symbols: SymbolEntry[];
107
- /** Absolute symbols. */
108
- absoluteSymbols: SymbolEntry[];
109
- /** Absolute fixup records. */
110
- fixups: Array<{
111
- offset: number;
112
- baseLower: string;
113
- addend: number;
114
- file: string;
115
- }>;
116
- /** Relative fixup records. */
117
- rel8Fixups: Array<{
118
- offset: number;
119
- origin: number;
120
- baseLower: string;
121
- addend: number;
122
- file: string;
123
- mnemonic: string;
124
- }>;
125
- /** Code bytes. */
126
- codeBytes: Map<number, number>;
127
- /** Data bytes. */
128
- dataBytes: Map<number, number>;
129
- /** Merged working byte map. */
130
- bytes: Map<number, number>;
131
- /** Code source segments for listing. */
132
- codeSourceSegments: EmittedSourceSegment[];
133
- /** Optional default code load address. */
134
- defaultCodeBase?: number;
135
- /** Alignment helper. */
136
- alignTo: (n: number, alignment: number) => number;
137
- /** Copies one byte-offset map into the merged `bytes` map. */
138
- writeBytePlacement: (base: number, byteOffsets: Map<number, number>, bytes: Map<number, number>, report: (message: string) => void) => void;
139
- /** Min/max written addresses for overlap checks. */
140
- computeWrittenRange: (bytes: Map<number, number>) => AddressRange;
141
- /** Rebases listing segments after code base is fixed. */
142
- rebaseCodeSourceSegments: (codeBase: number, segments: EmittedSourceSegment[]) => EmittedSourceSegment[];
143
- };
144
- export { finalizeProgramEmission } from './programLoweringFinalize.js';
@@ -1,2 +0,0 @@
1
- // --- Phase 3: finalization (placement, fixups, emission) ---
2
- export { finalizeProgramEmission } from './programLoweringFinalize.js';
@@ -1,5 +0,0 @@
1
- import type { Context } from './programLowering.js';
2
- import { type RawDataLike } from './asmRawDataLowering.js';
3
- export declare function createProgramLoweringDeclarationHelpers(ctx: Context): {
4
- lowerAsmRawDataDirective: (decl: RawDataLike) => void;
5
- };
@@ -1,5 +0,0 @@
1
- import { createAsmRawDataLowerer } from './asmRawDataLowering.js';
2
- export function createProgramLoweringDeclarationHelpers(ctx) {
3
- const lowerAsmRawDataDirective = createAsmRawDataLowerer(ctx);
4
- return { lowerAsmRawDataDirective };
5
- }
@@ -1,18 +0,0 @@
1
- import type { AddressRange, EmittedSourceSegment } from '../formats/types.js';
2
- import type { ProgramEmissionFinalizeContext } from './programLowering.js';
3
- export declare function computePlacementBases(ctx: Pick<ProgramEmissionFinalizeContext, 'baseExprs' | 'evalImmExpr' | 'env' | 'diagnostics' | 'diag' | 'primaryFile' | 'alignTo' | 'codeOffset' | 'dataOffset'>, defaultCodeBase?: number, options?: {
4
- quiet?: boolean;
5
- }): {
6
- codeBase: number;
7
- dataBase: number;
8
- codeOk: boolean;
9
- dataOk: boolean;
10
- };
11
- export declare function finalizeProgramEmission(ctx: ProgramEmissionFinalizeContext): {
12
- codeBase: number;
13
- dataBase: number;
14
- codeOk: boolean;
15
- dataOk: boolean;
16
- writtenRange: AddressRange;
17
- sourceSegments: EmittedSourceSegment[];
18
- };
@@ -1,115 +0,0 @@
1
- import { createFixupBaseResolver } from './fixupBaseResolution.js';
2
- export function computePlacementBases(ctx, defaultCodeBase, options) {
3
- const diagnostics = options?.quiet ? [] : ctx.diagnostics;
4
- const diagFn = options?.quiet ? () => { } : ctx.diag;
5
- const evalBase = (kind) => {
6
- const at = ctx.baseExprs[kind];
7
- if (!at)
8
- return undefined;
9
- const value = ctx.evalImmExpr(at, ctx.env, diagnostics);
10
- if (value === undefined) {
11
- diagFn(diagnostics, at.span.file, `Failed to evaluate placement "${kind}" base address.`);
12
- return undefined;
13
- }
14
- if (value < 0 || value > 0xffff) {
15
- diagFn(diagnostics, at.span.file, `Placement "${kind}" base address out of range (0..65535).`);
16
- return undefined;
17
- }
18
- return value;
19
- };
20
- const explicitCodeBase = evalBase('code');
21
- const explicitDataBase = evalBase('data');
22
- const codeOk = explicitCodeBase !== undefined || !ctx.baseExprs.code;
23
- const codeBase = explicitCodeBase ?? defaultCodeBase ?? 0;
24
- const dataBase = explicitDataBase ??
25
- (codeOk
26
- ? ctx.alignTo(codeBase + ctx.codeOffset, 2)
27
- : (diagFn(diagnostics, ctx.primaryFile, `Cannot compute default data base address because code base address is invalid.`),
28
- 0));
29
- const dataOk = explicitDataBase !== undefined || (ctx.baseExprs.data === undefined && codeOk);
30
- return { codeBase, dataBase, codeOk, dataOk };
31
- }
32
- export function finalizeProgramEmission(ctx) {
33
- const { codeBase, dataBase, codeOk, dataOk } = computePlacementBases(ctx, ctx.defaultCodeBase);
34
- const addrByNameLower = new Map();
35
- for (const ps of ctx.pending) {
36
- const base = ps.placement === 'code' ? codeBase : dataBase;
37
- const ok = ps.placement === 'code' ? codeOk : dataOk;
38
- if (!ok)
39
- continue;
40
- addrByNameLower.set(ps.name.toLowerCase(), base + ps.offset);
41
- }
42
- for (const [name, value] of ctx.env.equates) {
43
- addrByNameLower.set(name.toLowerCase(), value);
44
- }
45
- for (const sym of ctx.symbols) {
46
- if (sym.kind === 'constant')
47
- continue;
48
- addrByNameLower.set(sym.name.toLowerCase(), sym.address);
49
- }
50
- for (const sym of ctx.absoluteSymbols) {
51
- if (sym.kind === 'constant' || sym.address === undefined)
52
- continue;
53
- addrByNameLower.set(sym.name.toLowerCase(), sym.address);
54
- }
55
- const resolveFixupBase = createFixupBaseResolver({ env: ctx.env, addrByNameLower });
56
- for (const fx of ctx.fixups) {
57
- const base = resolveFixupBase(fx.baseLower);
58
- const addr = base === undefined ? undefined : base + fx.addend;
59
- if (addr === undefined) {
60
- ctx.diag(ctx.diagnostics, fx.file, `Unresolved symbol "${fx.baseLower}" in 16-bit fixup.`);
61
- continue;
62
- }
63
- if (addr < 0 || addr > 0xffff) {
64
- ctx.diag(ctx.diagnostics, fx.file, `16-bit fixup address out of range for "${fx.baseLower}" with addend ${fx.addend}: ${addr}.`);
65
- continue;
66
- }
67
- ctx.codeBytes.set(fx.offset, addr & 0xff);
68
- ctx.codeBytes.set(fx.offset + 1, (addr >> 8) & 0xff);
69
- }
70
- for (const fx of ctx.rel8Fixups) {
71
- const base = resolveFixupBase(fx.baseLower);
72
- const target = base === undefined ? undefined : base + fx.addend;
73
- if (target === undefined) {
74
- ctx.diag(ctx.diagnostics, fx.file, `Unresolved symbol "${fx.baseLower}" in rel8 ${fx.mnemonic} fixup.`);
75
- continue;
76
- }
77
- const origin = codeBase + fx.origin;
78
- const disp = target - origin;
79
- if (disp < -128 || disp > 127) {
80
- ctx.diag(ctx.diagnostics, fx.file, `${fx.mnemonic} target out of range for rel8 branch (${disp}, expected -128..127).`);
81
- continue;
82
- }
83
- ctx.codeBytes.set(fx.offset, disp & 0xff);
84
- }
85
- if (codeOk) {
86
- ctx.writeBytePlacement(codeBase, ctx.codeBytes, ctx.bytes, (message) => ctx.diag(ctx.diagnostics, ctx.primaryFile, message));
87
- }
88
- if (dataOk) {
89
- ctx.writeBytePlacement(dataBase, ctx.dataBytes, ctx.bytes, (message) => ctx.diag(ctx.diagnostics, ctx.primaryFile, message));
90
- }
91
- for (const ps of ctx.pending) {
92
- const base = ps.placement === 'code' ? codeBase : dataBase;
93
- const ok = ps.placement === 'code' ? codeOk : dataOk;
94
- if (!ok)
95
- continue;
96
- ctx.symbols.push({
97
- kind: ps.kind,
98
- name: ps.name,
99
- address: base + ps.offset,
100
- ...(ps.file !== undefined ? { file: ps.file } : {}),
101
- ...(ps.line !== undefined ? { line: ps.line } : {}),
102
- ...(ps.scope !== undefined ? { scope: ps.scope } : {}),
103
- ...(ps.size !== undefined ? { size: ps.size } : {}),
104
- });
105
- }
106
- ctx.symbols.push(...ctx.absoluteSymbols);
107
- return {
108
- codeBase,
109
- dataBase,
110
- codeOk,
111
- dataOk,
112
- writtenRange: ctx.computeWrittenRange(ctx.bytes),
113
- sourceSegments: codeOk ? ctx.rebaseCodeSourceSegments(codeBase, ctx.codeSourceSegments) : [],
114
- };
115
- }
@@ -1,2 +0,0 @@
1
- import type { LoweringContext, LoweringResult } from './programLowering.js';
2
- export declare function lowerProgramDeclarations(ctx: LoweringContext): LoweringResult;
@@ -1,93 +0,0 @@
1
- import { createProgramLoweringDeclarationHelpers } from './programLoweringDeclarations.js';
2
- import { tryLowerAsmDirective } from './asmDirectiveLowering.js';
3
- import { lowerAsmSourceInstruction } from './asmSourceInstructionLowering.js';
4
- import { isAsmBinFromDirective, isAsmBinToDirective, isAsmEndDirective, isAsmOrgDirective, isAsmRawDataDirective, } from './asmDirectiveTraversal.js';
5
- function placementForAsmOrg(items, index) {
6
- for (let lookahead = index + 1; lookahead < items.length; lookahead++) {
7
- const next = items[lookahead];
8
- if (!next?.kind)
9
- continue;
10
- if (isAsmRawDataDirective(next))
11
- return 'data';
12
- if (next.kind === 'AsmLabel' || next.kind === 'AsmEqu')
13
- continue;
14
- return 'code';
15
- }
16
- return 'code';
17
- }
18
- function lowerItem(ctx, lowerAsmRawDataDirective, item) {
19
- if (tryLowerAsmDirective(ctx, item))
20
- return;
21
- if (item.kind === 'AsmInstruction') {
22
- lowerAsmSourceInstruction(ctx, item);
23
- return;
24
- }
25
- if (isAsmRawDataDirective(item)) {
26
- lowerAsmRawDataDirective(item);
27
- return;
28
- }
29
- if (item.kind === 'EnumDecl') {
30
- const enumDecl = item;
31
- for (let idx = 0; idx < enumDecl.members.length; idx++) {
32
- const member = enumDecl.members[idx];
33
- const name = `${enumDecl.name}.${member}`;
34
- if (ctx.env.enums.get(name) !== idx)
35
- continue;
36
- if (ctx.taken.has(name)) {
37
- ctx.diag(ctx.diagnostics, enumDecl.span.file, `Duplicate symbol name "${name}".`);
38
- continue;
39
- }
40
- ctx.taken.add(name);
41
- ctx.symbols.push({
42
- kind: 'constant',
43
- name,
44
- value: idx,
45
- file: enumDecl.span.file,
46
- line: enumDecl.span.start.line,
47
- scope: 'global',
48
- });
49
- }
50
- return;
51
- }
52
- if (item.kind === 'OpDecl') {
53
- const op = item;
54
- const key = op.name.toLowerCase();
55
- if (ctx.taken.has(op.name) && !ctx.declaredOpNames.has(key)) {
56
- ctx.diag(ctx.diagnostics, op.span.file, `Duplicate symbol name "${op.name}".`);
57
- }
58
- else {
59
- ctx.taken.add(op.name);
60
- ctx.declaredOpNames.add(key);
61
- }
62
- return;
63
- }
64
- }
65
- export function lowerProgramDeclarations(ctx) {
66
- const { lowerAsmRawDataDirective } = createProgramLoweringDeclarationHelpers(ctx);
67
- for (const sourceFile of ctx.program.files) {
68
- ctx.activePlacementRef.current = 'code';
69
- let asmEndReached = false;
70
- for (let index = 0; index < sourceFile.items.length; index++) {
71
- const item = sourceFile.items[index];
72
- if (isAsmEndDirective(item)) {
73
- asmEndReached = true;
74
- continue;
75
- }
76
- if (asmEndReached && !isAsmBinFromDirective(item) && !isAsmBinToDirective(item))
77
- continue;
78
- if (isAsmOrgDirective(item)) {
79
- ctx.activePlacementRef.current = placementForAsmOrg(sourceFile.items, index);
80
- }
81
- lowerItem(ctx, lowerAsmRawDataDirective, item);
82
- }
83
- }
84
- return {
85
- codeOffset: ctx.codeOffsetRef.current,
86
- dataOffset: ctx.dataOffsetRef.current,
87
- pending: ctx.pending,
88
- symbols: ctx.symbols,
89
- absoluteSymbols: ctx.absoluteSymbols,
90
- codeBytes: ctx.codeBytes,
91
- dataBytes: ctx.dataBytes,
92
- };
93
- }
@@ -1,3 +0,0 @@
1
- import type { PrescanResult } from './prescanTypes.js';
2
- import type { PrescanContext } from './programLowering.js';
3
- export declare function preScanProgramDeclarations(ctx: PrescanContext): PrescanResult;
@@ -1,37 +0,0 @@
1
- function getOrCreateFileOps(ctx, file) {
2
- const existing = ctx.localOpsByFile.get(file);
3
- if (existing)
4
- return existing;
5
- const created = new Map();
6
- ctx.localOpsByFile.set(file, created);
7
- return created;
8
- }
9
- function addFileOp(ctx, file, key, op) {
10
- const fileOps = getOrCreateFileOps(ctx, file);
11
- const existing = fileOps.get(key);
12
- if (existing)
13
- existing.push(op);
14
- else
15
- fileOps.set(key, [op]);
16
- }
17
- function preScanItem(ctx, item, sourceUnitFile) {
18
- const localSourceUnitFile = sourceUnitFile ?? item.span?.file ?? ctx.program.entryFile;
19
- if (item.kind === 'OpDecl') {
20
- const op = item;
21
- const key = op.name.toLowerCase();
22
- addFileOp(ctx, localSourceUnitFile, key, op);
23
- if (op.span.file !== localSourceUnitFile)
24
- addFileOp(ctx, op.span.file, key, op);
25
- return;
26
- }
27
- }
28
- export function preScanProgramDeclarations(ctx) {
29
- for (const sourceFile of ctx.program.files) {
30
- for (const item of sourceFile.items)
31
- preScanItem(ctx, item, sourceFile.path);
32
- }
33
- return {
34
- localOpsByFile: ctx.localOpsByFile,
35
- declaredOpNames: ctx.declaredOpNames,
36
- };
37
- }
@@ -1,13 +0,0 @@
1
- import type { AsmOperandNode, EaExprNode, ImmExprNode } from '../frontend/ast.js';
2
- export declare const formatImmExprForAsm: (expr: ImmExprNode) => string;
3
- type EaExprFormatOptions = {
4
- formatImmExpr: (expr: ImmExprNode) => string;
5
- wrapImmEa?: boolean;
6
- };
7
- export declare const formatEaExpr: (ea: EaExprNode, { formatImmExpr, wrapImmEa }: EaExprFormatOptions) => string;
8
- export declare const formatAsmInstrForTrace: (head: string, operands: AsmOperandNode[]) => string;
9
- export declare const formatAbs16FixupAsm: (opcode: number, baseLower: string, addend: number) => string;
10
- export declare const formatAbs16FixupEdAsm: (opcode2: number, baseLower: string, addend: number) => string;
11
- export declare const formatAbs16FixupPrefixedAsm: (prefix: number, opcode2: number, baseLower: string, addend: number) => string;
12
- export declare const formatIxDisp: (disp: number) => string;
13
- export {};