@jhlagado/azm 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/README.md +110 -78
  2. package/dist/src/api-compile.d.ts +0 -2
  3. package/dist/src/api-compile.js +2 -9
  4. package/dist/src/assembly/address-planning.js +21 -1
  5. package/dist/src/assembly/program-emission.js +1 -0
  6. package/dist/src/cli/parse-args.d.ts +0 -1
  7. package/dist/src/cli/parse-args.js +0 -7
  8. package/dist/src/cli/write-artifacts.js +0 -11
  9. package/dist/src/core/compile.js +192 -9
  10. package/dist/src/expansion/op-expansion.js +2 -0
  11. package/dist/src/model/expression.d.ts +4 -0
  12. package/dist/src/model/source-item.d.ts +11 -0
  13. package/dist/src/outputs/index.js +0 -2
  14. package/dist/src/outputs/types.d.ts +3 -16
  15. package/dist/src/outputs/write-asm80.js +206 -5
  16. package/dist/src/register-care/analyze.js +36 -8
  17. package/dist/src/register-care/annotations.js +33 -146
  18. package/dist/src/register-care/fix.d.ts +2 -0
  19. package/dist/src/register-care/fix.js +52 -0
  20. package/dist/src/register-care/instruction-shape.d.ts +11 -0
  21. package/dist/src/register-care/instruction-shape.js +129 -0
  22. package/dist/src/register-care/liveness.js +15 -7
  23. package/dist/src/register-care/profiles.js +4 -0
  24. package/dist/src/register-care/programModel.js +79 -13
  25. package/dist/src/register-care/report.d.ts +2 -1
  26. package/dist/src/register-care/report.js +91 -34
  27. package/dist/src/register-care/routine-summaries.d.ts +6 -0
  28. package/dist/src/register-care/routine-summaries.js +89 -0
  29. package/dist/src/register-care/summaries.d.ts +3 -3
  30. package/dist/src/register-care/summaries.js +42 -75
  31. package/dist/{legacy-root-azm/src/registerCare → src/register-care}/summary.js +33 -51
  32. package/dist/src/register-care/types.d.ts +6 -1
  33. package/dist/src/semantics/expression-evaluation.d.ts +7 -3
  34. package/dist/src/semantics/expression-evaluation.js +57 -0
  35. package/dist/src/source/strip-line-comment.d.ts +2 -0
  36. package/dist/src/source/strip-line-comment.js +26 -0
  37. package/dist/src/syntax/directive-aliases.js +9 -10
  38. package/dist/src/syntax/parse-diagnostics.d.ts +12 -0
  39. package/dist/src/syntax/parse-diagnostics.js +18 -0
  40. package/dist/src/syntax/parse-expression.js +34 -9
  41. package/dist/src/syntax/parse-line.js +150 -54
  42. package/dist/src/tooling/case-style.js +3 -0
  43. package/docs/reference/cli.md +6 -4
  44. package/docs/reference/tooling-api.md +13 -9
  45. package/package.json +4 -6
  46. package/dist/legacy-root-azm/src/analysis.d.ts +0 -11
  47. package/dist/legacy-root-azm/src/analysis.js +0 -41
  48. package/dist/legacy-root-azm/src/compile.d.ts +0 -10
  49. package/dist/legacy-root-azm/src/compile.js +0 -186
  50. package/dist/legacy-root-azm/src/compileShared.d.ts +0 -3
  51. package/dist/legacy-root-azm/src/compileShared.js +0 -7
  52. package/dist/legacy-root-azm/src/diagnosticTypes.d.ts +0 -77
  53. package/dist/legacy-root-azm/src/diagnosticTypes.js +0 -53
  54. package/dist/legacy-root-azm/src/formats/index.d.ts +0 -7
  55. package/dist/legacy-root-azm/src/formats/index.js +0 -17
  56. package/dist/legacy-root-azm/src/formats/range.d.ts +0 -17
  57. package/dist/legacy-root-azm/src/formats/range.js +0 -45
  58. package/dist/legacy-root-azm/src/formats/types.d.ts +0 -283
  59. package/dist/legacy-root-azm/src/formats/types.js +0 -1
  60. package/dist/legacy-root-azm/src/formats/writeAsm80.d.ts +0 -6
  61. package/dist/legacy-root-azm/src/formats/writeAsm80.js +0 -86
  62. package/dist/legacy-root-azm/src/formats/writeBin.d.ts +0 -7
  63. package/dist/legacy-root-azm/src/formats/writeBin.js +0 -23
  64. package/dist/legacy-root-azm/src/formats/writeD8m.d.ts +0 -9
  65. package/dist/legacy-root-azm/src/formats/writeD8m.js +0 -245
  66. package/dist/legacy-root-azm/src/formats/writeHex.d.ts +0 -8
  67. package/dist/legacy-root-azm/src/formats/writeHex.js +0 -38
  68. package/dist/legacy-root-azm/src/formats/writeListing.d.ts +0 -8
  69. package/dist/legacy-root-azm/src/formats/writeListing.js +0 -83
  70. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.d.ts +0 -39
  71. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.js +0 -89
  72. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.d.ts +0 -4
  73. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.js +0 -94
  74. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.d.ts +0 -10
  75. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.js +0 -25
  76. package/dist/legacy-root-azm/src/frontend/ast.d.ts +0 -376
  77. package/dist/legacy-root-azm/src/frontend/ast.js +0 -1
  78. package/dist/legacy-root-azm/src/frontend/directiveAliases.d.ts +0 -14
  79. package/dist/legacy-root-azm/src/frontend/directiveAliases.js +0 -189
  80. package/dist/legacy-root-azm/src/frontend/grammarData.d.ts +0 -14
  81. package/dist/legacy-root-azm/src/frontend/grammarData.js +0 -65
  82. package/dist/legacy-root-azm/src/frontend/immExprUtils.d.ts +0 -2
  83. package/dist/legacy-root-azm/src/frontend/immExprUtils.js +0 -12
  84. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.d.ts +0 -17
  85. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.js +0 -187
  86. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.d.ts +0 -3
  87. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.js +0 -73
  88. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.d.ts +0 -6
  89. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.js +0 -16
  90. package/dist/legacy-root-azm/src/frontend/parseAsmStream.d.ts +0 -10
  91. package/dist/legacy-root-azm/src/frontend/parseAsmStream.js +0 -33
  92. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.d.ts +0 -18
  93. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.js +0 -34
  94. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.d.ts +0 -9
  95. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.js +0 -16
  96. package/dist/legacy-root-azm/src/frontend/parseEnum.d.ts +0 -12
  97. package/dist/legacy-root-azm/src/frontend/parseEnum.js +0 -70
  98. package/dist/legacy-root-azm/src/frontend/parseImm.d.ts +0 -10
  99. package/dist/legacy-root-azm/src/frontend/parseImm.js +0 -397
  100. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.d.ts +0 -11
  101. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.js +0 -94
  102. package/dist/legacy-root-azm/src/frontend/parseOp.d.ts +0 -25
  103. package/dist/legacy-root-azm/src/frontend/parseOp.js +0 -120
  104. package/dist/legacy-root-azm/src/frontend/parseOpHeader.d.ts +0 -20
  105. package/dist/legacy-root-azm/src/frontend/parseOpHeader.js +0 -32
  106. package/dist/legacy-root-azm/src/frontend/parseOperands.d.ts +0 -4
  107. package/dist/legacy-root-azm/src/frontend/parseOperands.js +0 -290
  108. package/dist/legacy-root-azm/src/frontend/parseParams.d.ts +0 -6
  109. package/dist/legacy-root-azm/src/frontend/parseParams.js +0 -62
  110. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.d.ts +0 -12
  111. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.js +0 -17
  112. package/dist/legacy-root-azm/src/frontend/parseParserShared.d.ts +0 -2
  113. package/dist/legacy-root-azm/src/frontend/parseParserShared.js +0 -8
  114. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.d.ts +0 -1
  115. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.js +0 -3
  116. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.d.ts +0 -7
  117. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.js +0 -142
  118. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.d.ts +0 -34
  119. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.js +0 -177
  120. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.d.ts +0 -46
  121. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.js +0 -53
  122. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.d.ts +0 -16
  123. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.js +0 -68
  124. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.d.ts +0 -11
  125. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.js +0 -50
  126. package/dist/legacy-root-azm/src/frontend/parseTypes.d.ts +0 -24
  127. package/dist/legacy-root-azm/src/frontend/parseTypes.js +0 -77
  128. package/dist/legacy-root-azm/src/frontend/parser.d.ts +0 -11
  129. package/dist/legacy-root-azm/src/frontend/parser.js +0 -88
  130. package/dist/legacy-root-azm/src/frontend/source.d.ts +0 -28
  131. package/dist/legacy-root-azm/src/frontend/source.js +0 -58
  132. package/dist/legacy-root-azm/src/frontend/sourceExtensions.d.ts +0 -2
  133. package/dist/legacy-root-azm/src/frontend/sourceExtensions.js +0 -6
  134. package/dist/legacy-root-azm/src/lintCaseStyle.d.ts +0 -4
  135. package/dist/legacy-root-azm/src/lintCaseStyle.js +0 -129
  136. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.d.ts +0 -4
  137. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.js +0 -229
  138. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.d.ts +0 -47
  139. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.js +0 -52
  140. package/dist/legacy-root-azm/src/lowering/asmEquResolution.d.ts +0 -8
  141. package/dist/legacy-root-azm/src/lowering/asmEquResolution.js +0 -69
  142. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.d.ts +0 -15
  143. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.js +0 -102
  144. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.d.ts +0 -5
  145. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.js +0 -54
  146. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.d.ts +0 -46
  147. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.js +0 -51
  148. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.d.ts +0 -43
  149. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.js +0 -254
  150. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.d.ts +0 -23
  151. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.js +0 -1
  152. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.d.ts +0 -28
  153. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.js +0 -144
  154. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.d.ts +0 -17
  155. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.js +0 -39
  156. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.d.ts +0 -16
  157. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.js +0 -209
  158. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.d.ts +0 -4
  159. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.js +0 -9
  160. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.d.ts +0 -4
  161. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.js +0 -14
  162. package/dist/legacy-root-azm/src/lowering/asmUtils.d.ts +0 -13
  163. package/dist/legacy-root-azm/src/lowering/asmUtils.js +0 -105
  164. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.d.ts +0 -54
  165. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.js +0 -128
  166. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.d.ts +0 -151
  167. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.js +0 -16
  168. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.d.ts +0 -7
  169. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.js +0 -75
  170. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.d.ts +0 -66
  171. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.js +0 -166
  172. package/dist/legacy-root-azm/src/lowering/bytePlacement.d.ts +0 -7
  173. package/dist/legacy-root-azm/src/lowering/bytePlacement.js +0 -37
  174. package/dist/legacy-root-azm/src/lowering/capabilities.d.ts +0 -67
  175. package/dist/legacy-root-azm/src/lowering/capabilities.js +0 -1
  176. package/dist/legacy-root-azm/src/lowering/eaResolution.d.ts +0 -58
  177. package/dist/legacy-root-azm/src/lowering/eaResolution.js +0 -159
  178. package/dist/legacy-root-azm/src/lowering/emissionCore.d.ts +0 -17
  179. package/dist/legacy-root-azm/src/lowering/emissionCore.js +0 -21
  180. package/dist/legacy-root-azm/src/lowering/emit.d.ts +0 -17
  181. package/dist/legacy-root-azm/src/lowering/emit.js +0 -46
  182. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.d.ts +0 -63
  183. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.js +0 -41
  184. package/dist/legacy-root-azm/src/lowering/emitFinalization.d.ts +0 -61
  185. package/dist/legacy-root-azm/src/lowering/emitFinalization.js +0 -66
  186. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.d.ts +0 -19
  187. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.js +0 -26
  188. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -7
  189. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.js +0 -119
  190. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.d.ts +0 -4
  191. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.js +0 -12
  192. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.d.ts +0 -21
  193. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.js +0 -1
  194. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.d.ts +0 -70
  195. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.js +0 -203
  196. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.d.ts +0 -82
  197. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.js +0 -55
  198. package/dist/legacy-root-azm/src/lowering/emitPipeline.d.ts +0 -121
  199. package/dist/legacy-root-azm/src/lowering/emitPipeline.js +0 -57
  200. package/dist/legacy-root-azm/src/lowering/emitProgramContext.d.ts +0 -39
  201. package/dist/legacy-root-azm/src/lowering/emitProgramContext.js +0 -29
  202. package/dist/legacy-root-azm/src/lowering/emitState.d.ts +0 -90
  203. package/dist/legacy-root-azm/src/lowering/emitState.js +0 -124
  204. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.d.ts +0 -7
  205. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.js +0 -23
  206. package/dist/legacy-root-azm/src/lowering/fixupEmission.d.ts +0 -64
  207. package/dist/legacy-root-azm/src/lowering/fixupEmission.js +0 -199
  208. package/dist/legacy-root-azm/src/lowering/immMath.d.ts +0 -2
  209. package/dist/legacy-root-azm/src/lowering/immMath.js +0 -34
  210. package/dist/legacy-root-azm/src/lowering/inputAssets.d.ts +0 -7
  211. package/dist/legacy-root-azm/src/lowering/inputAssets.js +0 -106
  212. package/dist/legacy-root-azm/src/lowering/ldEncoding.d.ts +0 -15
  213. package/dist/legacy-root-azm/src/lowering/ldEncoding.js +0 -12
  214. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.d.ts +0 -5
  215. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.js +0 -124
  216. package/dist/legacy-root-azm/src/lowering/ldFormSelection.d.ts +0 -26
  217. package/dist/legacy-root-azm/src/lowering/ldFormSelection.js +0 -92
  218. package/dist/legacy-root-azm/src/lowering/ldLowering.d.ts +0 -7
  219. package/dist/legacy-root-azm/src/lowering/ldLowering.js +0 -13
  220. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.d.ts +0 -23
  221. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.js +0 -185
  222. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.d.ts +0 -13
  223. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.js +0 -86
  224. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.d.ts +0 -27
  225. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.js +0 -215
  226. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.d.ts +0 -202
  227. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.js +0 -1
  228. package/dist/legacy-root-azm/src/lowering/loweredFormat.d.ts +0 -3
  229. package/dist/legacy-root-azm/src/lowering/loweredFormat.js +0 -26
  230. package/dist/legacy-root-azm/src/lowering/loweredItemSize.d.ts +0 -4
  231. package/dist/legacy-root-azm/src/lowering/loweredItemSize.js +0 -17
  232. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.d.ts +0 -9
  233. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.js +0 -55
  234. package/dist/legacy-root-azm/src/lowering/loweringTypes.d.ts +0 -27
  235. package/dist/legacy-root-azm/src/lowering/loweringTypes.js +0 -1
  236. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.d.ts +0 -9
  237. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.js +0 -9
  238. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.d.ts +0 -15
  239. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.js +0 -45
  240. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.d.ts +0 -15
  241. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.js +0 -88
  242. package/dist/legacy-root-azm/src/lowering/opExpansionStream.d.ts +0 -12
  243. package/dist/legacy-root-azm/src/lowering/opExpansionStream.js +0 -176
  244. package/dist/legacy-root-azm/src/lowering/opMatching.d.ts +0 -52
  245. package/dist/legacy-root-azm/src/lowering/opMatching.js +0 -355
  246. package/dist/legacy-root-azm/src/lowering/opSubstitution.d.ts +0 -13
  247. package/dist/legacy-root-azm/src/lowering/opSubstitution.js +0 -175
  248. package/dist/legacy-root-azm/src/lowering/prescanTypes.d.ts +0 -7
  249. package/dist/legacy-root-azm/src/lowering/prescanTypes.js +0 -1
  250. package/dist/legacy-root-azm/src/lowering/programLowering.d.ts +0 -144
  251. package/dist/legacy-root-azm/src/lowering/programLowering.js +0 -2
  252. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.d.ts +0 -5
  253. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.js +0 -5
  254. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.d.ts +0 -18
  255. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.js +0 -115
  256. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.d.ts +0 -2
  257. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.js +0 -93
  258. package/dist/legacy-root-azm/src/lowering/programPrescan.d.ts +0 -3
  259. package/dist/legacy-root-azm/src/lowering/programPrescan.js +0 -37
  260. package/dist/legacy-root-azm/src/lowering/traceFormat.d.ts +0 -13
  261. package/dist/legacy-root-azm/src/lowering/traceFormat.js +0 -211
  262. package/dist/legacy-root-azm/src/packageInfo.d.ts +0 -1
  263. package/dist/legacy-root-azm/src/packageInfo.js +0 -15
  264. package/dist/legacy-root-azm/src/pathCompare.d.ts +0 -3
  265. package/dist/legacy-root-azm/src/pathCompare.js +0 -26
  266. package/dist/legacy-root-azm/src/pipeline.d.ts +0 -91
  267. package/dist/legacy-root-azm/src/pipeline.js +0 -1
  268. package/dist/legacy-root-azm/src/registerCare/analyze.d.ts +0 -24
  269. package/dist/legacy-root-azm/src/registerCare/analyze.js +0 -327
  270. package/dist/legacy-root-azm/src/registerCare/boundaryHints.d.ts +0 -2
  271. package/dist/legacy-root-azm/src/registerCare/boundaryHints.js +0 -10
  272. package/dist/legacy-root-azm/src/registerCare/carriers.d.ts +0 -4
  273. package/dist/legacy-root-azm/src/registerCare/carriers.js +0 -78
  274. package/dist/legacy-root-azm/src/registerCare/controlFlow.d.ts +0 -5
  275. package/dist/legacy-root-azm/src/registerCare/controlFlow.js +0 -35
  276. package/dist/legacy-root-azm/src/registerCare/fix.d.ts +0 -11
  277. package/dist/legacy-root-azm/src/registerCare/fix.js +0 -119
  278. package/dist/legacy-root-azm/src/registerCare/liveness.d.ts +0 -7
  279. package/dist/legacy-root-azm/src/registerCare/liveness.js +0 -227
  280. package/dist/legacy-root-azm/src/registerCare/profiles.d.ts +0 -11
  281. package/dist/legacy-root-azm/src/registerCare/profiles.js +0 -45
  282. package/dist/legacy-root-azm/src/registerCare/programModel.d.ts +0 -3
  283. package/dist/legacy-root-azm/src/registerCare/programModel.js +0 -181
  284. package/dist/legacy-root-azm/src/registerCare/report.d.ts +0 -5
  285. package/dist/legacy-root-azm/src/registerCare/report.js +0 -139
  286. package/dist/legacy-root-azm/src/registerCare/smartComments.d.ts +0 -5
  287. package/dist/legacy-root-azm/src/registerCare/smartComments.js +0 -247
  288. package/dist/legacy-root-azm/src/registerCare/types.d.ts +0 -154
  289. package/dist/legacy-root-azm/src/registerCare/types.js +0 -1
  290. package/dist/legacy-root-azm/src/semantics/declVisitor.d.ts +0 -5
  291. package/dist/legacy-root-azm/src/semantics/declVisitor.js +0 -11
  292. package/dist/legacy-root-azm/src/semantics/env.d.ts +0 -28
  293. package/dist/legacy-root-azm/src/semantics/env.js +0 -432
  294. package/dist/legacy-root-azm/src/semantics/layout.d.ts +0 -21
  295. package/dist/legacy-root-azm/src/semantics/layout.js +0 -226
  296. package/dist/legacy-root-azm/src/semantics/layoutCastFold.d.ts +0 -22
  297. package/dist/legacy-root-azm/src/semantics/layoutCastFold.js +0 -118
  298. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.d.ts +0 -2
  299. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.js +0 -4
  300. package/dist/legacy-root-azm/src/semantics/typeQueries.d.ts +0 -31
  301. package/dist/legacy-root-azm/src/semantics/typeQueries.js +0 -124
  302. package/dist/legacy-root-azm/src/sourceIncludeExpansion.d.ts +0 -17
  303. package/dist/legacy-root-azm/src/sourceIncludeExpansion.js +0 -124
  304. package/dist/legacy-root-azm/src/sourceIncludePaths.d.ts +0 -1
  305. package/dist/legacy-root-azm/src/sourceIncludePaths.js +0 -12
  306. package/dist/legacy-root-azm/src/sourceLoader.d.ts +0 -15
  307. package/dist/legacy-root-azm/src/sourceLoader.js +0 -118
  308. package/dist/legacy-root-azm/src/z80/effects.d.ts +0 -3
  309. package/dist/legacy-root-azm/src/z80/effects.js +0 -516
  310. package/dist/legacy-root-azm/src/z80/encode.d.ts +0 -10
  311. package/dist/legacy-root-azm/src/z80/encode.js +0 -412
  312. package/dist/legacy-root-azm/src/z80/encodeAlu.d.ts +0 -7
  313. package/dist/legacy-root-azm/src/z80/encodeAlu.js +0 -219
  314. package/dist/legacy-root-azm/src/z80/encodeBitOps.d.ts +0 -7
  315. package/dist/legacy-root-azm/src/z80/encodeBitOps.js +0 -123
  316. package/dist/legacy-root-azm/src/z80/encodeContext.d.ts +0 -29
  317. package/dist/legacy-root-azm/src/z80/encodeContext.js +0 -1
  318. package/dist/legacy-root-azm/src/z80/encodeControl.d.ts +0 -26
  319. package/dist/legacy-root-azm/src/z80/encodeControl.js +0 -180
  320. package/dist/legacy-root-azm/src/z80/encodeCoreOps.d.ts +0 -7
  321. package/dist/legacy-root-azm/src/z80/encodeCoreOps.js +0 -131
  322. package/dist/legacy-root-azm/src/z80/encodeIo.d.ts +0 -9
  323. package/dist/legacy-root-azm/src/z80/encodeIo.js +0 -128
  324. package/dist/legacy-root-azm/src/z80/encodeLd.d.ts +0 -13
  325. package/dist/legacy-root-azm/src/z80/encodeLd.js +0 -273
  326. package/dist/legacy-root-azm/src/z80/encoderRegistry.d.ts +0 -13
  327. package/dist/legacy-root-azm/src/z80/encoderRegistry.js +0 -169
  328. package/dist/src/outputs/write-listing.d.ts +0 -2
  329. package/dist/src/outputs/write-listing.js +0 -79
  330. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/annotate.d.ts +0 -0
  331. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/annotate.js +0 -0
  332. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/sourceText.d.ts +0 -0
  333. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/sourceText.js +0 -0
  334. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/summary.d.ts +0 -0
@@ -1,516 +0,0 @@
1
- import { expandCarrier } from '../registerCare/carriers.js';
2
- const FLAG_WRITES = ['sign', 'zero', 'halfCarry', 'parity', 'carry'];
3
- const INC_DEC_FLAG_WRITES = ['sign', 'zero', 'halfCarry', 'parity'];
4
- const ROTATE_SHIFT_FLAG_WRITES = [
5
- 'sign',
6
- 'zero',
7
- 'halfCarry',
8
- 'parity',
9
- 'carry',
10
- ];
11
- const BIT_FLAG_WRITES = ['sign', 'zero', 'halfCarry', 'parity'];
12
- const STACK_POINTER_UNITS = ['SPH', 'SPL'];
13
- const UNKNOWN_UNITS = [
14
- 'A',
15
- 'B',
16
- 'C',
17
- 'D',
18
- 'E',
19
- 'H',
20
- 'L',
21
- 'IXH',
22
- 'IXL',
23
- 'IYH',
24
- 'IYL',
25
- 'SPH',
26
- 'SPL',
27
- 'carry',
28
- 'zero',
29
- 'sign',
30
- 'parity',
31
- 'halfCarry',
32
- ];
33
- function baseEffect() {
34
- return {
35
- reads: [],
36
- writes: [],
37
- stack: { kind: 'none' },
38
- control: { kind: 'fallthrough' },
39
- };
40
- }
41
- function unknownEffect() {
42
- return {
43
- reads: UNKNOWN_UNITS,
44
- writes: UNKNOWN_UNITS,
45
- stack: { kind: 'unknown' },
46
- control: { kind: 'unknown' },
47
- };
48
- }
49
- function appendUnique(out, units) {
50
- for (const unit of units) {
51
- if (!out.includes(unit))
52
- out.push(unit);
53
- }
54
- }
55
- function concatUnique(...groups) {
56
- const out = [];
57
- for (const group of groups)
58
- appendUnique(out, group);
59
- return out;
60
- }
61
- function registerUnits(op) {
62
- if (!op || op.kind !== 'Reg')
63
- return undefined;
64
- return expandCarrier(op.name);
65
- }
66
- function immName(op) {
67
- return op?.kind === 'Imm' && op.expr.kind === 'ImmName' ? op.expr.name : undefined;
68
- }
69
- function immLiteral(op) {
70
- return op?.kind === 'Imm' && op.expr.kind === 'ImmLiteral' ? op.expr.value : undefined;
71
- }
72
- function operandTokenName(op) {
73
- if (op?.kind === 'Reg')
74
- return op.name.toUpperCase();
75
- if (op?.kind === 'Imm' && op.expr.kind === 'ImmName')
76
- return op.expr.name.toUpperCase();
77
- return undefined;
78
- }
79
- function conditionFlagRead(op) {
80
- switch (operandTokenName(op)) {
81
- case 'Z':
82
- case 'NZ':
83
- return ['zero'];
84
- case 'C':
85
- case 'NC':
86
- return ['carry'];
87
- case 'M':
88
- case 'P':
89
- return ['sign'];
90
- case 'PE':
91
- case 'PO':
92
- return ['parity'];
93
- default:
94
- return undefined;
95
- }
96
- }
97
- function eaReads(ea) {
98
- switch (ea.kind) {
99
- case 'EaName':
100
- return expandCarrier(ea.name) ?? [];
101
- case 'EaImm':
102
- return [];
103
- case 'EaLayoutCast':
104
- case 'EaField':
105
- return eaReads(ea.base);
106
- case 'EaAdd':
107
- case 'EaSub':
108
- return eaReads(ea.base);
109
- case 'EaIndex': {
110
- const base = eaReads(ea.base);
111
- const index = indexReads(ea.index);
112
- if (!base || !index)
113
- return undefined;
114
- return concatUnique(base, index);
115
- }
116
- default:
117
- return undefined;
118
- }
119
- }
120
- function indexReads(index) {
121
- switch (index.kind) {
122
- case 'IndexImm':
123
- return [];
124
- case 'IndexReg8':
125
- case 'IndexReg16':
126
- return expandCarrier(index.reg);
127
- case 'IndexMemHL':
128
- return expandCarrier('HL');
129
- case 'IndexMemIxIy':
130
- return expandCarrier(index.base);
131
- case 'IndexEa':
132
- return eaReads(index.expr);
133
- default:
134
- return undefined;
135
- }
136
- }
137
- function operandReads(op) {
138
- if (!op)
139
- return undefined;
140
- switch (op.kind) {
141
- case 'Reg':
142
- return expandCarrier(op.name);
143
- case 'Imm':
144
- return immReads(op.expr);
145
- case 'Ea':
146
- case 'Mem':
147
- return eaReads(op.expr);
148
- case 'PortC':
149
- return expandCarrier('C');
150
- case 'PortImm8':
151
- return immReads(op.expr);
152
- default:
153
- return undefined;
154
- }
155
- }
156
- function immReads(expr) {
157
- switch (expr.kind) {
158
- case 'ImmBinary':
159
- return concatUnique(immReads(expr.left), immReads(expr.right));
160
- case 'ImmUnary':
161
- return immReads(expr.expr);
162
- default:
163
- return [];
164
- }
165
- }
166
- function targetName(operands) {
167
- if (operands.length === 0)
168
- return undefined;
169
- return immName(operands[operands.length - 1]);
170
- }
171
- function callControl(target, conditional) {
172
- return target === undefined
173
- ? { kind: 'call', conditional }
174
- : { kind: 'call', target, conditional };
175
- }
176
- function rstControl(vector) {
177
- return vector === undefined ? { kind: 'rst' } : { kind: 'rst', vector };
178
- }
179
- function jumpControl(target, conditional) {
180
- return target === undefined
181
- ? { kind: 'jump', conditional }
182
- : { kind: 'jump', target, conditional };
183
- }
184
- function isConditionalControl(operands) {
185
- return operands.length > 1;
186
- }
187
- function ldEffect(inst) {
188
- if (inst.operands.length !== 2)
189
- return unknownEffect();
190
- const dst = inst.operands[0];
191
- const src = inst.operands[1];
192
- if (!dst || !src)
193
- return unknownEffect();
194
- const effect = baseEffect();
195
- const srcReads = operandReads(src);
196
- if (!srcReads)
197
- return unknownEffect();
198
- if (dst.kind === 'Reg') {
199
- const dstWrites = expandCarrier(dst.name);
200
- if (!dstWrites)
201
- return unknownEffect();
202
- effect.reads = srcReads;
203
- effect.writes = dstWrites;
204
- return effect;
205
- }
206
- if (dst.kind === 'Mem') {
207
- const dstReads = operandReads(dst);
208
- if (!dstReads)
209
- return unknownEffect();
210
- effect.reads = concatUnique(dstReads, srcReads);
211
- return effect;
212
- }
213
- return unknownEffect();
214
- }
215
- function unaryOperandEffect(inst, flagWrites) {
216
- if (inst.operands.length !== 1)
217
- return unknownEffect();
218
- const op = inst.operands[0];
219
- if (!op)
220
- return unknownEffect();
221
- const reads = operandReads(op);
222
- if (!reads)
223
- return unknownEffect();
224
- const writes = op.kind === 'Reg' ? registerUnits(op) : [];
225
- if (!writes)
226
- return unknownEffect();
227
- return {
228
- ...baseEffect(),
229
- reads,
230
- writes: concatUnique(writes, flagWrites),
231
- };
232
- }
233
- function incDecEffect(inst) {
234
- return unaryOperandEffect(inst, INC_DEC_FLAG_WRITES);
235
- }
236
- function aluEffect(inst) {
237
- if (inst.operands.length < 1 || inst.operands.length > 2)
238
- return unknownEffect();
239
- const first = inst.operands[0];
240
- const second = inst.operands[1];
241
- const xorSelfZero = inst.head === 'xor' &&
242
- second === undefined &&
243
- first?.kind === 'Reg' &&
244
- first.name.toUpperCase() === 'A';
245
- const firstReads = operandReads(first);
246
- if (!firstReads)
247
- return unknownEffect();
248
- let reads;
249
- let writes = [];
250
- if (second) {
251
- const secondReads = operandReads(second);
252
- if (!secondReads)
253
- return unknownEffect();
254
- reads = concatUnique(firstReads, secondReads);
255
- if (inst.head !== 'cp' && first?.kind === 'Reg') {
256
- const firstWrites = registerUnits(first);
257
- if (!firstWrites)
258
- return unknownEffect();
259
- writes = firstWrites;
260
- }
261
- }
262
- else {
263
- const aReads = expandCarrier('A');
264
- if (!aReads)
265
- return unknownEffect();
266
- reads = xorSelfZero ? [] : concatUnique(aReads, firstReads);
267
- if (inst.head !== 'cp')
268
- writes = aReads;
269
- }
270
- const carryReads = inst.head === 'adc' || inst.head === 'sbc' ? ['carry'] : [];
271
- return {
272
- ...baseEffect(),
273
- reads: concatUnique(reads, carryReads),
274
- writes: concatUnique(writes, FLAG_WRITES),
275
- };
276
- }
277
- function pushEffect(inst) {
278
- if (inst.operands.length !== 1)
279
- return unknownEffect();
280
- const units = registerUnits(inst.operands[0]);
281
- if (!units)
282
- return unknownEffect();
283
- return {
284
- ...baseEffect(),
285
- reads: units,
286
- writes: STACK_POINTER_UNITS,
287
- stack: { kind: 'push', units },
288
- };
289
- }
290
- function popEffect(inst) {
291
- if (inst.operands.length !== 1)
292
- return unknownEffect();
293
- const units = registerUnits(inst.operands[0]);
294
- if (!units)
295
- return unknownEffect();
296
- return {
297
- ...baseEffect(),
298
- writes: concatUnique(units, STACK_POINTER_UNITS),
299
- stack: { kind: 'pop', units },
300
- };
301
- }
302
- function controlEffect(control, reads = []) {
303
- return {
304
- ...baseEffect(),
305
- reads,
306
- control,
307
- };
308
- }
309
- function stackControlEffect(control, reads = []) {
310
- return {
311
- ...controlEffect(control, reads),
312
- writes: STACK_POINTER_UNITS,
313
- stack: { kind: 'unknown' },
314
- };
315
- }
316
- function jumpEffect(inst) {
317
- const conditional = isConditionalControl(inst.operands);
318
- const reads = conditional
319
- ? conditionFlagRead(inst.operands[0])
320
- : operandReads(inst.operands[inst.operands.length - 1]);
321
- if (!reads)
322
- return unknownEffect();
323
- const effect = controlEffect(jumpControl(targetName(inst.operands), conditional));
324
- effect.reads = reads;
325
- return effect;
326
- }
327
- function callEffect(inst) {
328
- const conditional = isConditionalControl(inst.operands);
329
- const reads = conditional ? conditionFlagRead(inst.operands[0]) : [];
330
- if (!reads)
331
- return unknownEffect();
332
- return stackControlEffect(callControl(targetName(inst.operands), conditional), reads);
333
- }
334
- function retEffect(inst) {
335
- const reads = inst.operands.length > 0 ? conditionFlagRead(inst.operands[0]) : [];
336
- if (!reads)
337
- return unknownEffect();
338
- return stackControlEffect({ kind: 'return' }, reads);
339
- }
340
- function djnzEffect(inst) {
341
- return {
342
- ...baseEffect(),
343
- reads: ['B'],
344
- writes: ['B'],
345
- control: jumpControl(targetName(inst.operands), true),
346
- };
347
- }
348
- function rotateShiftEffect(inst) {
349
- return unaryOperandEffect(inst, ROTATE_SHIFT_FLAG_WRITES);
350
- }
351
- function accumulatorRotateEffect(head) {
352
- const reads = head === 'rla' || head === 'rra' ? ['A', 'carry'] : ['A'];
353
- return {
354
- ...baseEffect(),
355
- reads,
356
- writes: ['A', 'carry', 'halfCarry'],
357
- };
358
- }
359
- function bitEffect(inst) {
360
- if (inst.operands.length !== 2)
361
- return unknownEffect();
362
- const target = inst.operands[1];
363
- if (!target)
364
- return unknownEffect();
365
- const reads = operandReads(target);
366
- if (!reads)
367
- return unknownEffect();
368
- return {
369
- ...baseEffect(),
370
- reads,
371
- writes: BIT_FLAG_WRITES,
372
- };
373
- }
374
- function outEffect(inst) {
375
- if (inst.operands.length !== 2)
376
- return unknownEffect();
377
- const portReads = operandReads(inst.operands[0]);
378
- const valueReads = operandReads(inst.operands[1]);
379
- if (!portReads || !valueReads)
380
- return unknownEffect();
381
- return {
382
- ...baseEffect(),
383
- reads: concatUnique(portReads, valueReads),
384
- };
385
- }
386
- function inEffect(inst) {
387
- if (inst.operands.length !== 2)
388
- return unknownEffect();
389
- const target = inst.operands[0];
390
- const port = inst.operands[1];
391
- if (target?.kind !== 'Reg')
392
- return unknownEffect();
393
- const writes = registerUnits(target);
394
- if (!writes)
395
- return unknownEffect();
396
- if (port?.kind === 'PortImm8') {
397
- return {
398
- ...baseEffect(),
399
- reads: concatUnique(['A'], operandReads(port) ?? []),
400
- writes,
401
- };
402
- }
403
- if (port?.kind === 'PortC') {
404
- return {
405
- ...baseEffect(),
406
- reads: ['C'],
407
- writes: concatUnique(writes, BIT_FLAG_WRITES),
408
- };
409
- }
410
- return unknownEffect();
411
- }
412
- function blockTransferEffect(inst) {
413
- if (inst.operands.length !== 0)
414
- return unknownEffect();
415
- return {
416
- ...baseEffect(),
417
- reads: ['H', 'L', 'D', 'E', 'B', 'C'],
418
- writes: ['H', 'L', 'D', 'E', 'B', 'C', 'halfCarry', 'parity'],
419
- };
420
- }
421
- function exEffect(inst) {
422
- if (inst.operands.length !== 2)
423
- return unknownEffect();
424
- const left = inst.operands[0];
425
- const right = inst.operands[1];
426
- const leftUnits = registerUnits(left);
427
- const rightUnits = registerUnits(right);
428
- if (!leftUnits || !rightUnits)
429
- return unknownEffect();
430
- const leftName = left?.kind === 'Reg' ? left.name.toUpperCase() : '';
431
- const rightName = right?.kind === 'Reg' ? right.name.toUpperCase() : '';
432
- const isDeHl = (leftName === 'DE' && rightName === 'HL') || (leftName === 'HL' && rightName === 'DE');
433
- if (!isDeHl)
434
- return unknownEffect();
435
- return {
436
- ...baseEffect(),
437
- reads: concatUnique(leftUnits, rightUnits),
438
- writes: concatUnique(leftUnits, rightUnits),
439
- };
440
- }
441
- export function getZ80InstructionEffect(inst) {
442
- switch (inst.head.toLowerCase()) {
443
- case 'nop':
444
- case 'halt':
445
- case 'di':
446
- case 'ei':
447
- return baseEffect();
448
- case 'ld':
449
- return ldEffect(inst);
450
- case 'inc':
451
- case 'dec':
452
- return incDecEffect(inst);
453
- case 'add':
454
- case 'adc':
455
- case 'sbc':
456
- case 'sub':
457
- case 'and':
458
- case 'or':
459
- case 'xor':
460
- case 'cp':
461
- return aluEffect(inst);
462
- case 'push':
463
- return pushEffect(inst);
464
- case 'pop':
465
- return popEffect(inst);
466
- case 'call':
467
- return callEffect(inst);
468
- case 'rst':
469
- return stackControlEffect(rstControl(immLiteral(inst.operands[0])));
470
- case 'ret':
471
- case 'retn':
472
- case 'reti':
473
- return retEffect(inst);
474
- case 'jp':
475
- case 'jr':
476
- return jumpEffect(inst);
477
- case 'djnz':
478
- return djnzEffect(inst);
479
- case 'rlc':
480
- case 'rrc':
481
- case 'rl':
482
- case 'rr':
483
- case 'sla':
484
- case 'sra':
485
- case 'srl':
486
- return rotateShiftEffect(inst);
487
- case 'rlca':
488
- case 'rrca':
489
- case 'rla':
490
- case 'rra':
491
- return accumulatorRotateEffect(inst.head.toLowerCase());
492
- case 'bit':
493
- return bitEffect(inst);
494
- case 'scf':
495
- return { ...baseEffect(), writes: ['carry', 'halfCarry'] };
496
- case 'ccf':
497
- return { ...baseEffect(), reads: ['carry'], writes: ['carry', 'halfCarry'] };
498
- case 'cpl':
499
- return { ...baseEffect(), reads: ['A'], writes: ['A', 'halfCarry'] };
500
- case 'neg':
501
- return { ...baseEffect(), reads: ['A'], writes: concatUnique(['A'], FLAG_WRITES) };
502
- case 'out':
503
- return outEffect(inst);
504
- case 'in':
505
- return inEffect(inst);
506
- case 'ldi':
507
- case 'ldir':
508
- case 'ldd':
509
- case 'lddr':
510
- return blockTransferEffect(inst);
511
- case 'ex':
512
- return exEffect(inst);
513
- default:
514
- return unknownEffect();
515
- }
516
- }
@@ -1,10 +0,0 @@
1
- import type { Diagnostic } from '../diagnosticTypes.js';
2
- import type { AsmInstructionNode } from '../frontend/ast.js';
3
- import type { CompileEnv } from '../semantics/env.js';
4
- /**
5
- * Encode a single `asm` instruction node into Z80 machine-code bytes.
6
- *
7
- * - Immediate operands may be `imm` expressions (const/enum names and operators), evaluated via the env.
8
- * - Unsupported forms append an error diagnostic and return `undefined`.
9
- */
10
- export declare function encodeInstruction(node: AsmInstructionNode, env: CompileEnv, diagnostics: Diagnostic[]): Uint8Array | undefined;