@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,144 +0,0 @@
1
- import { diagLayoutCastRuntimeIndex, isConstantLayoutCastEa } from '../semantics/layoutCastFold.js';
2
- function eaOperandExpr(op) {
3
- if (op.kind === 'Ea')
4
- return op.expr;
5
- if (op.kind === 'Mem')
6
- return op.expr;
7
- return undefined;
8
- }
9
- function ldImmediateOpcode(dst) {
10
- switch (dst) {
11
- case 'BC':
12
- return 0x01;
13
- case 'DE':
14
- return 0x11;
15
- case 'HL':
16
- return 0x21;
17
- case 'SP':
18
- return 0x31;
19
- default:
20
- return undefined;
21
- }
22
- }
23
- function tryEmitUnresolvedSymbolicImmLd(asmItem, ctx, dst, srcOp) {
24
- if (srcOp.kind !== 'Imm')
25
- return false;
26
- if (ctx.evalImmExpr(srcOp.expr) !== undefined)
27
- return false;
28
- const symbolic = ctx.symbolicTargetFromExpr(srcOp.expr);
29
- if (!symbolic)
30
- return false;
31
- const baseLower = ctx.resolveRawLabelName(symbolic.baseLower).toLowerCase();
32
- const opcode = ldImmediateOpcode(dst);
33
- if (opcode !== undefined) {
34
- ctx.emitAbs16Fixup(opcode, baseLower, symbolic.addend, asmItem.span);
35
- return true;
36
- }
37
- if (dst === 'IX' || dst === 'IY') {
38
- ctx.emitAbs16FixupPrefixed(dst === 'IX' ? 0xdd : 0xfd, 0x21, baseLower, symbolic.addend, asmItem.span);
39
- return true;
40
- }
41
- return false;
42
- }
43
- /** Emit ordinary abs16 fixups for folded layout-cast address expressions. */
44
- function tryLdFoldedLayoutCast(asmItem, ctx) {
45
- if (asmItem.operands.length !== 2)
46
- return false;
47
- const dstOp = asmItem.operands[0];
48
- const srcOp = asmItem.operands[1];
49
- const span = asmItem.span;
50
- const emitFromAbs = (opcode, resolved, prefixed) => {
51
- if (resolved.kind !== 'abs')
52
- return;
53
- if (prefixed) {
54
- ctx.emitAbs16FixupPrefixed(prefixed.prefix, prefixed.opcode2, resolved.baseLower, resolved.addend, span);
55
- }
56
- else {
57
- ctx.emitAbs16Fixup(opcode, resolved.baseLower, resolved.addend, span);
58
- }
59
- };
60
- const dstName = dstOp.kind === 'Reg' ? dstOp.name.toUpperCase() : undefined;
61
- const srcEa = eaOperandExpr(srcOp);
62
- const dstEa = eaOperandExpr(dstOp);
63
- if (srcEa && isConstantLayoutCastEa(srcEa)) {
64
- const resolved = ctx.resolveEa(srcEa, span);
65
- if (resolved?.kind === 'abs') {
66
- if (dstName === 'A' && srcOp.kind === 'Mem') {
67
- emitFromAbs(0x3a, resolved);
68
- return true;
69
- }
70
- if (dstName === 'HL') {
71
- emitFromAbs(0x21, resolved);
72
- return true;
73
- }
74
- if (dstName === 'DE') {
75
- emitFromAbs(0x11, resolved);
76
- return true;
77
- }
78
- if (dstName === 'BC') {
79
- emitFromAbs(0x01, resolved);
80
- return true;
81
- }
82
- if (dstName === 'SP') {
83
- emitFromAbs(0x31, resolved);
84
- return true;
85
- }
86
- if (dstName === 'IX') {
87
- emitFromAbs(0x21, resolved, { prefix: 0xdd, opcode2: 0x21 });
88
- return true;
89
- }
90
- if (dstName === 'IY') {
91
- emitFromAbs(0x21, resolved, { prefix: 0xfd, opcode2: 0x21 });
92
- return true;
93
- }
94
- }
95
- }
96
- if (dstEa && isConstantLayoutCastEa(dstEa)) {
97
- const resolved = ctx.resolveEa(dstEa, span);
98
- if (resolved?.kind === 'abs' && srcOp.kind === 'Reg' && srcOp.name.toUpperCase() === 'A') {
99
- emitFromAbs(0x32, resolved);
100
- return true;
101
- }
102
- }
103
- return false;
104
- }
105
- export function tryLowerLdInstruction(asmItem, ctx) {
106
- const head = asmItem.head.toLowerCase();
107
- if (head !== 'ld')
108
- return undefined;
109
- for (const op of asmItem.operands) {
110
- const ea = eaOperandExpr(op);
111
- if (ea && diagLayoutCastRuntimeIndex(ctx.diagnostics, asmItem.span, ea)) {
112
- ctx.syncToFlow();
113
- return true;
114
- }
115
- }
116
- if (asmItem.operands.length === 2) {
117
- const dstOp = asmItem.operands[0];
118
- const srcOp = asmItem.operands[1];
119
- const dst = dstOp.kind === 'Reg' ? dstOp.name.toUpperCase() : undefined;
120
- if (tryEmitUnresolvedSymbolicImmLd(asmItem, ctx, dst, srcOp)) {
121
- ctx.syncToFlow();
122
- return true;
123
- }
124
- if (ctx.emitAbs16LdFixup(dstOp, srcOp, asmItem.span)) {
125
- ctx.syncToFlow();
126
- return true;
127
- }
128
- if (tryLdFoldedLayoutCast(asmItem, ctx)) {
129
- ctx.syncToFlow();
130
- return true;
131
- }
132
- }
133
- if (asmItem.operands.some((op) => op.kind === 'Mem' && op.expr.kind !== 'EaImm' && !ctx.isRegisterLikeMemEa(op.expr))) {
134
- if (ctx.lowerLdWithEa(asmItem)) {
135
- ctx.syncToFlow();
136
- return true;
137
- }
138
- }
139
- if (asmItem.operands.some(ctx.isUnresolvedLayoutLdOperand)) {
140
- ctx.diagAt(ctx.diagnostics, asmItem.span, `"ld" does not accept unresolved layout operands; use explicit labels, directives, and constant layout expressions.`);
141
- return true;
142
- }
143
- return undefined;
144
- }
@@ -1,17 +0,0 @@
1
- import type { AsmInstructionNode, AsmItemNode, SourceSpan } from '../frontend/ast.js';
2
- import type { FlowState } from './assemblerFlowSetup.js';
3
- type Context<TCodeSegmentTag> = {
4
- sourceTagForSpan: (span: SourceSpan) => TCodeSegmentTag;
5
- getCurrentCodeSegmentTag: () => TCodeSegmentTag | undefined;
6
- setCurrentCodeSegmentTag: (tag: TCodeSegmentTag | undefined) => void;
7
- defineCodeLabel: (name: string, span: SourceSpan, scope: 'global' | 'local') => void;
8
- emitAsmInstruction: (item: AsmInstructionNode) => void;
9
- flowRef: {
10
- readonly current: FlowState;
11
- };
12
- syncFromFlow: () => void;
13
- };
14
- export declare function createAsmRangeLoweringHelpers<TCodeSegmentTag>(ctx: Context<TCodeSegmentTag>): {
15
- lowerAsmRange: (asmItems: readonly AsmItemNode[], startIndex: number, stopKinds: Set<string>) => number;
16
- };
17
- export {};
@@ -1,39 +0,0 @@
1
- export function createAsmRangeLoweringHelpers(ctx) {
2
- const lowerAsmRange = (asmItems, startIndex, stopKinds) => {
3
- let i = startIndex;
4
- while (i < asmItems.length) {
5
- const item = asmItems[i];
6
- if (stopKinds.has(item.kind))
7
- return i;
8
- const prevTag = ctx.getCurrentCodeSegmentTag();
9
- ctx.setCurrentCodeSegmentTag(ctx.sourceTagForSpan(item.span));
10
- try {
11
- if (item.kind === 'AsmLabel') {
12
- ctx.defineCodeLabel(item.name, item.span, 'global');
13
- if (!ctx.flowRef.current.reachable) {
14
- ctx.flowRef.current.reachable = true;
15
- ctx.flowRef.current.spValid = false;
16
- ctx.flowRef.current.spDelta = 0;
17
- ctx.flowRef.current.spInvalidDueToMutation = false;
18
- ctx.syncFromFlow();
19
- }
20
- i++;
21
- continue;
22
- }
23
- if (item.kind === 'AsmInstruction') {
24
- ctx.emitAsmInstruction(item);
25
- i++;
26
- continue;
27
- }
28
- }
29
- finally {
30
- ctx.setCurrentCodeSegmentTag(prevTag);
31
- }
32
- i++;
33
- }
34
- return i;
35
- };
36
- return {
37
- lowerAsmRange,
38
- };
39
- }
@@ -1,16 +0,0 @@
1
- import type { ImmExprNode, SourceSpan } from '../frontend/ast.js';
2
- import type { Context } from './programLowering.js';
3
- type RawValueLike = ImmExprNode | string | {
4
- kind: string;
5
- value?: unknown;
6
- };
7
- export type RawDataLike = {
8
- span: SourceSpan;
9
- name?: string;
10
- directive: 'db' | 'dw' | 'ds' | 'cstr' | 'pstr' | 'istr';
11
- values?: RawValueLike[];
12
- size?: ImmExprNode;
13
- fill?: ImmExprNode;
14
- };
15
- export declare function createAsmRawDataLowerer(ctx: Context): (decl: RawDataLike) => void;
16
- export {};
@@ -1,209 +0,0 @@
1
- import { sizeOfTypeExpr } from '../semantics/layout.js';
2
- import { containsCurrentLocation, evalAsmImmAtCurrent, placementAddressAtOffset, publishAsmAddressConst, } from './asmDirectiveTraversal.js';
3
- function rawStringValue(value) {
4
- if (typeof value === 'string')
5
- return value;
6
- if (!('kind' in value))
7
- return undefined;
8
- if (value.kind === 'AsmString') {
9
- return typeof value.value === 'string' ? value.value : undefined;
10
- }
11
- return undefined;
12
- }
13
- function rawImmValue(value) {
14
- if (typeof value === 'string')
15
- return undefined;
16
- if (!('kind' in value))
17
- return undefined;
18
- return value.kind.startsWith('Imm') ? value : undefined;
19
- }
20
- function evalRawDataSize(ctx, size) {
21
- if (size.kind === 'ImmName') {
22
- const constValue = ctx.env.equates.get(size.name) ?? ctx.env.equates.get(size.name.toLowerCase());
23
- const enumValue = ctx.env.enums.get(size.name);
24
- if (constValue === undefined && enumValue === undefined) {
25
- const typeExpr = { kind: 'TypeName', span: size.span, name: size.name };
26
- const typeSize = sizeOfTypeExpr(typeExpr, ctx.env, undefined);
27
- if (typeSize !== undefined)
28
- return typeSize;
29
- }
30
- }
31
- return ctx.evalImmExpr(size, ctx.env, ctx.diagnostics);
32
- }
33
- export function createAsmRawDataLowerer(ctx) {
34
- return (decl) => {
35
- const activePlacement = ctx.activePlacementRef.current;
36
- const name = decl.name ?? '';
37
- if (name.length > 0) {
38
- const lower = name.toLowerCase();
39
- if (ctx.taken.has(lower)) {
40
- const alreadyPending = ctx.pending.some((symbol) => symbol.name.toLowerCase() === lower);
41
- if (!alreadyPending)
42
- ctx.diag(ctx.diagnostics, decl.span.file, `Duplicate symbol name "${name}".`);
43
- }
44
- else {
45
- ctx.taken.add(lower);
46
- const offset = activePlacement === 'code' ? ctx.codeOffsetRef.current : ctx.dataOffsetRef.current;
47
- const address = placementAddressAtOffset(ctx, activePlacement, offset);
48
- if (address !== undefined)
49
- publishAsmAddressConst(ctx, name, address);
50
- const pending = {
51
- kind: 'label',
52
- name,
53
- placement: activePlacement,
54
- offset,
55
- file: decl.span.file,
56
- line: decl.span.start.line,
57
- scope: 'global',
58
- };
59
- ctx.pending.push(pending);
60
- ctx.recordLoweredAsmItem({ kind: 'label', name }, decl.span);
61
- }
62
- }
63
- const writeByte = (value) => {
64
- if (activePlacement === 'code') {
65
- const offset = ctx.codeOffsetRef.current;
66
- ctx.codeBytes.set(offset, value & 0xff);
67
- ctx.codeOffsetRef.current = offset + 1;
68
- }
69
- else {
70
- const offset = ctx.dataOffsetRef.current;
71
- ctx.dataBytes.set(offset, value & 0xff);
72
- ctx.dataOffsetRef.current = offset + 1;
73
- }
74
- };
75
- const writeWord = (value) => {
76
- writeByte(value & 0xff);
77
- writeByte((value >> 8) & 0xff);
78
- };
79
- const currentAddress = () => {
80
- const offset = activePlacement === 'code' ? ctx.codeOffsetRef.current : ctx.dataOffsetRef.current;
81
- return placementAddressAtOffset(ctx, activePlacement, offset);
82
- };
83
- if (decl.directive === 'ds') {
84
- if (!decl.size) {
85
- ctx.diag(ctx.diagnostics, decl.span.file, `Raw data size is missing for "${name}".`);
86
- return;
87
- }
88
- const size = evalRawDataSize(ctx, decl.size);
89
- if (size === undefined || size < 0) {
90
- ctx.diag(ctx.diagnostics, decl.span.file, `Failed to evaluate raw data size for "${name}".`);
91
- return;
92
- }
93
- const fill = decl.fill ? ctx.evalImmExpr(decl.fill, ctx.env, ctx.diagnostics) : undefined;
94
- if (decl.fill && fill === undefined) {
95
- ctx.diag(ctx.diagnostics, decl.span.file, `Failed to evaluate raw data fill for "${name}".`);
96
- return;
97
- }
98
- ctx.recordLoweredAsmItem({
99
- kind: 'ds',
100
- size: { kind: 'literal', value: size },
101
- ...(decl.fill ? { fill: ctx.lowerImmExprForLoweredAsm(decl.fill) } : {}),
102
- }, decl.span);
103
- if (fill === undefined) {
104
- if (activePlacement === 'code') {
105
- ctx.codeOffsetRef.current += size;
106
- }
107
- else {
108
- ctx.dataOffsetRef.current += size;
109
- }
110
- return;
111
- }
112
- for (let i = 0; i < size; i++)
113
- writeByte(fill);
114
- return;
115
- }
116
- if (decl.directive === 'cstr' || decl.directive === 'pstr' || decl.directive === 'istr') {
117
- const stringValue = rawStringValue((decl.values ?? [])[0] ?? '');
118
- if (stringValue === undefined) {
119
- ctx.diag(ctx.diagnostics, decl.span.file, `"${decl.directive}" expects a string value.`);
120
- return;
121
- }
122
- const bytes = [...stringValue].map((char) => char.codePointAt(0) ?? 0);
123
- const emittedBytes = [];
124
- const writeStringByte = (value) => {
125
- const byte = value & 0xff;
126
- writeByte(byte);
127
- emittedBytes.push(byte);
128
- };
129
- if (decl.directive === 'cstr') {
130
- for (const byte of bytes)
131
- writeStringByte(byte);
132
- writeStringByte(0);
133
- }
134
- else if (decl.directive === 'pstr') {
135
- writeStringByte(bytes.length);
136
- for (const byte of bytes)
137
- writeStringByte(byte);
138
- }
139
- else if (bytes.length > 0) {
140
- for (let i = 0; i < bytes.length; i++) {
141
- const isLast = i === bytes.length - 1;
142
- writeStringByte(bytes[i] | (isLast ? 0x80 : 0));
143
- }
144
- }
145
- if (emittedBytes.length > 0) {
146
- ctx.recordLoweredAsmItem({
147
- kind: 'db',
148
- values: emittedBytes.map((value) => ({ kind: 'literal', value })),
149
- }, decl.span);
150
- }
151
- return;
152
- }
153
- const loweredValues = [];
154
- for (const value of decl.values ?? []) {
155
- const stringValue = rawStringValue(value);
156
- if (stringValue !== undefined) {
157
- if (decl.directive !== 'db') {
158
- ctx.diag(ctx.diagnostics, decl.span.file, `String raw data values are only valid for "db".`);
159
- continue;
160
- }
161
- for (const char of stringValue) {
162
- const byte = char.codePointAt(0) ?? 0;
163
- writeByte(byte);
164
- loweredValues.push({ kind: 'literal', value: byte & 0xff });
165
- }
166
- continue;
167
- }
168
- const imm = rawImmValue(value);
169
- if (!imm) {
170
- ctx.diag(ctx.diagnostics, decl.span.file, `Failed to evaluate raw data value for "${name}".`);
171
- if (decl.directive === 'db')
172
- writeByte(0);
173
- else
174
- writeWord(0);
175
- continue;
176
- }
177
- const usesCurrentLocation = containsCurrentLocation(imm);
178
- const current = usesCurrentLocation ? currentAddress() : undefined;
179
- if (usesCurrentLocation && current === undefined) {
180
- ctx.diag(ctx.diagnostics, decl.span.file, `Failed to evaluate current location.`);
181
- if (decl.directive === 'db')
182
- writeByte(0);
183
- else
184
- writeWord(0);
185
- continue;
186
- }
187
- const evaluated = current === undefined
188
- ? ctx.evalImmExpr(imm, ctx.env, ctx.diagnostics)
189
- : evalAsmImmAtCurrent(ctx, imm, current);
190
- loweredValues.push(evaluated === undefined
191
- ? ctx.lowerImmExprForLoweredAsm(imm)
192
- : { kind: 'literal', value: evaluated });
193
- if (evaluated !== undefined) {
194
- if (decl.directive === 'db')
195
- writeByte(evaluated);
196
- else
197
- writeWord(evaluated);
198
- continue;
199
- }
200
- if (decl.directive === 'db')
201
- writeByte(0);
202
- else
203
- writeWord(0);
204
- }
205
- ctx.recordLoweredAsmItem(decl.directive === 'db'
206
- ? { kind: 'db', values: loweredValues }
207
- : { kind: 'dw', values: loweredValues }, decl.span);
208
- };
209
- }
@@ -1,4 +0,0 @@
1
- import type { LoweringContext } from './programLowering.js';
2
- import { createAssemblerInstructionEmitters } from './assemblerLoweringPhases.js';
3
- export type AsmSourceEmitter = ReturnType<typeof createAssemblerInstructionEmitters>;
4
- export declare function createAsmSourceEmitter(ctx: LoweringContext): AsmSourceEmitter;
@@ -1,9 +0,0 @@
1
- import { createAssemblerInstructionEmitters, createAsmSourceFlowPhase, prepareAssemblerInstructionSetupPhase, } from './assemblerLoweringPhases.js';
2
- function createAsmSourceSetup(ctx) {
3
- return prepareAssemblerInstructionSetupPhase(ctx);
4
- }
5
- export function createAsmSourceEmitter(ctx) {
6
- const setup = createAsmSourceSetup(ctx);
7
- const flow = createAsmSourceFlowPhase(setup);
8
- return createAssemblerInstructionEmitters(setup, flow);
9
- }
@@ -1,4 +0,0 @@
1
- import type { AsmInstructionNode } from '../frontend/ast.js';
2
- import type { LoweringContext } from './programLowering.js';
3
- /** Lowers one top-level instruction in ASM source via op expansion and full ld/ea pipelines. */
4
- export declare function lowerAsmSourceInstruction(ctx: LoweringContext, item: AsmInstructionNode): void;
@@ -1,14 +0,0 @@
1
- import { createAsmSourceEmitter } from './asmSourceEmitter.js';
2
- const asmSourceEmitterByContext = new WeakMap();
3
- function asmSourceEmitterForContext(ctx) {
4
- let emitter = asmSourceEmitterByContext.get(ctx);
5
- if (emitter)
6
- return emitter;
7
- emitter = createAsmSourceEmitter(ctx);
8
- asmSourceEmitterByContext.set(ctx, emitter);
9
- return emitter;
10
- }
11
- /** Lowers one top-level instruction in ASM source via op expansion and full ld/ea pipelines. */
12
- export function lowerAsmSourceInstruction(ctx, item) {
13
- asmSourceEmitterForContext(ctx).emitAsmInstruction(item);
14
- }
@@ -1,13 +0,0 @@
1
- import type { AsmOperandNode, EaExprNode, ImmExprNode } from '../frontend/ast.js';
2
- type AsmUtilsContext = {
3
- /** Returns true when `name` matches a declared enum (used to normalize asm tokens); callback must stay pure. */
4
- isEnumName: (name: string) => boolean;
5
- };
6
- export declare function cloneImmExpr(expr: ImmExprNode): ImmExprNode;
7
- export declare function cloneEaExpr(ea: EaExprNode): EaExprNode;
8
- export declare function cloneOperand(op: AsmOperandNode): AsmOperandNode;
9
- export declare function flattenEaDottedName(ea: EaExprNode): string | undefined;
10
- export declare function createAsmUtilityHelpers(ctx: AsmUtilsContext): {
11
- normalizeFixedToken: (op: AsmOperandNode) => string | undefined;
12
- };
13
- export {};
@@ -1,105 +0,0 @@
1
- function cloneOffsetPath(path) {
2
- return {
3
- ...path,
4
- steps: path.steps.map((step) => step.kind === 'OffsetIndex' ? { ...step, expr: cloneImmExpr(step.expr) } : { ...step }),
5
- };
6
- }
7
- export function cloneImmExpr(expr) {
8
- if (expr.kind === 'ImmLiteral')
9
- return { ...expr };
10
- if (expr.kind === 'ImmCurrentLocation')
11
- return { ...expr };
12
- if (expr.kind === 'ImmName')
13
- return { ...expr };
14
- if (expr.kind === 'ImmSizeof')
15
- return { ...expr };
16
- if (expr.kind === 'ImmOffset')
17
- return { ...expr, path: cloneOffsetPath(expr.path) };
18
- if (expr.kind === 'ImmUnary')
19
- return { ...expr, expr: cloneImmExpr(expr.expr) };
20
- return { ...expr, left: cloneImmExpr(expr.left), right: cloneImmExpr(expr.right) };
21
- }
22
- export function cloneEaExpr(ea) {
23
- switch (ea.kind) {
24
- case 'EaName':
25
- return { ...ea };
26
- case 'EaImm':
27
- return { ...ea, expr: cloneImmExpr(ea.expr) };
28
- case 'EaLayoutCast':
29
- return { ...ea, base: cloneEaExpr(ea.base) };
30
- case 'EaField':
31
- return { ...ea, base: cloneEaExpr(ea.base) };
32
- case 'EaIndex':
33
- return {
34
- ...ea,
35
- base: cloneEaExpr(ea.base),
36
- index: ea.index.kind === 'IndexEa'
37
- ? { ...ea.index, expr: cloneEaExpr(ea.index.expr) }
38
- : ea.index.kind === 'IndexImm'
39
- ? { ...ea.index, value: cloneImmExpr(ea.index.value) }
40
- : ea.index.kind === 'IndexMemIxIy' && ea.index.disp
41
- ? { ...ea.index, disp: cloneImmExpr(ea.index.disp) }
42
- : { ...ea.index },
43
- };
44
- case 'EaAdd':
45
- case 'EaSub':
46
- return { ...ea, base: cloneEaExpr(ea.base), offset: cloneImmExpr(ea.offset) };
47
- }
48
- }
49
- export function cloneOperand(op) {
50
- switch (op.kind) {
51
- case 'Reg':
52
- case 'PortC':
53
- return { ...op };
54
- case 'Imm':
55
- case 'PortImm8':
56
- return { ...op, expr: cloneImmExpr(op.expr) };
57
- case 'Ea':
58
- case 'Mem':
59
- return { ...op, expr: cloneEaExpr(op.expr) };
60
- }
61
- }
62
- export function flattenEaDottedName(ea) {
63
- if (ea.kind === 'EaName')
64
- return ea.name;
65
- if (ea.kind === 'EaImm')
66
- return undefined;
67
- if (ea.kind === 'EaLayoutCast')
68
- return undefined;
69
- if (ea.kind === 'EaField') {
70
- const base = flattenEaDottedName(ea.base);
71
- return base ? `${base}.${ea.field}` : undefined;
72
- }
73
- return undefined;
74
- }
75
- export function createAsmUtilityHelpers(ctx) {
76
- const enumImmExprFromOperand = (op) => {
77
- if (op.kind === 'Imm')
78
- return op.expr;
79
- if (op.kind !== 'Ea')
80
- return undefined;
81
- const name = flattenEaDottedName(op.expr);
82
- if (!name || !ctx.isEnumName(name))
83
- return undefined;
84
- return { kind: 'ImmName', span: op.span, name };
85
- };
86
- const normalizeFixedToken = (op) => {
87
- switch (op.kind) {
88
- case 'Reg':
89
- return op.name.toUpperCase();
90
- case 'Imm':
91
- if (op.expr.kind === 'ImmName')
92
- return op.expr.name.toUpperCase();
93
- return undefined;
94
- case 'Ea': {
95
- const enumExpr = enumImmExprFromOperand(op);
96
- return enumExpr?.kind === 'ImmName' ? enumExpr.name.toUpperCase() : undefined;
97
- }
98
- default:
99
- return undefined;
100
- }
101
- };
102
- return {
103
- normalizeFixedToken,
104
- };
105
- }
@@ -1,54 +0,0 @@
1
- import type { Diagnostic, DiagnosticId } from '../diagnosticTypes.js';
2
- import type { AsmInstructionNode, AsmOperandNode, SourceSpan } from '../frontend/ast.js';
3
- import type { PendingSymbol, SourceSegmentTag } from './loweringTypes.js';
4
- export type FlowState = {
5
- reachable: boolean;
6
- spDelta: number;
7
- spValid: boolean;
8
- spInvalidDueToMutation: boolean;
9
- };
10
- export type OpExpansionFrame = {
11
- key: string;
12
- name: string;
13
- declSpan: SourceSpan;
14
- callSiteSpan: SourceSpan;
15
- };
16
- type AssemblerFlowSetupContext = {
17
- diagnostics: Diagnostic[];
18
- diagAt: (diagnostics: Diagnostic[], span: SourceSpan, message: string) => void;
19
- diagAtWithId: (diagnostics: Diagnostic[], span: SourceSpan, id: DiagnosticId, message: string) => void;
20
- getCurrentCodeSegmentTag: () => SourceSegmentTag | undefined;
21
- setCurrentCodeSegmentTag: (tag: SourceSegmentTag | undefined) => void;
22
- taken: Set<string>;
23
- traceLabel: (offset: number, name: string, span?: SourceSpan) => void;
24
- pending: PendingSymbol[];
25
- getCodeOffset: () => number;
26
- emitInstr: (head: string, operands: AsmOperandNode[], span: SourceSpan) => boolean;
27
- generatedLabelCounterRef: {
28
- current: number;
29
- };
30
- formatAsmOperandForOpDiag: (op: AsmOperandNode) => string;
31
- };
32
- export declare function createAssemblerFlowSetupHelpers({ diagnostics, diagAt, diagAtWithId, getCurrentCodeSegmentTag, setCurrentCodeSegmentTag, taken, traceLabel, pending, getCodeOffset, emitInstr, generatedLabelCounterRef, formatAsmOperandForOpDiag, }: AssemblerFlowSetupContext): {
33
- currentOpExpansionFrame: (opExpansionStack: OpExpansionFrame[]) => OpExpansionFrame | undefined;
34
- rootOpExpansionFrame: (opExpansionStack: OpExpansionFrame[]) => OpExpansionFrame | undefined;
35
- currentMacroCallSiteSpan: (opExpansionStack: OpExpansionFrame[]) => SourceSpan | undefined;
36
- formatInstructionForOpExpansionDiag: (inst: AsmInstructionNode) => string;
37
- appendInvalidOpExpansionDiagnostic: (inst: AsmInstructionNode, diagnosticsStart: number, opExpansionStack: OpExpansionFrame[]) => void;
38
- sourceTagForSpan: (span: SourceSpan, opExpansionStack: OpExpansionFrame[]) => SourceSegmentTag;
39
- withCodeSourceTag: <T>(tag: SourceSegmentTag, fn: () => T) => T;
40
- syncFromFlow: (flow: FlowState, tracked: {
41
- delta: number;
42
- valid: boolean;
43
- invalid: boolean;
44
- }) => void;
45
- syncToFlow: (flow: FlowState, tracked: {
46
- delta: number;
47
- valid: boolean;
48
- invalid: boolean;
49
- }) => void;
50
- newHiddenLabel: (prefix: string) => string;
51
- defineCodeLabel: (name: string, span: SourceSpan, scope: "global" | "local") => void;
52
- emitVirtualReg16Transfer: (asmItem: AsmInstructionNode) => boolean;
53
- };
54
- export {};