@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,273 +0,0 @@
1
- export function encodeLdInstruction(node, env, diagnostics, ctx) {
2
- const { diag, regName, immValue, indexedReg8, reg8Code, fitsImm8, fitsImm16 } = ctx;
3
- const ops = node.operands;
4
- if (ops.length !== 2) {
5
- diag(diagnostics, node, `ld expects two operands`);
6
- return undefined;
7
- }
8
- const dst = regName(ops[0]);
9
- const src = regName(ops[1]);
10
- if (dst === 'I' && src === 'A')
11
- return Uint8Array.of(0xed, 0x47);
12
- if (dst === 'A' && src === 'I')
13
- return Uint8Array.of(0xed, 0x57);
14
- if (dst === 'R' && src === 'A')
15
- return Uint8Array.of(0xed, 0x4f);
16
- if (dst === 'A' && src === 'R')
17
- return Uint8Array.of(0xed, 0x5f);
18
- const r = regName(ops[0]);
19
- const n = immValue(ops[1], env);
20
- if (n !== undefined && r) {
21
- const indexedDst = indexedReg8(ops[0]);
22
- if (indexedDst) {
23
- if (!fitsImm8(n)) {
24
- diag(diagnostics, node, `ld ${indexedDst.display}, n expects imm8`);
25
- return undefined;
26
- }
27
- return Uint8Array.of(indexedDst.prefix, 0x06 + (indexedDst.code << 3), n & 0xff);
28
- }
29
- const r8 = reg8Code(r);
30
- if (r8 !== undefined) {
31
- if (!fitsImm8(n)) {
32
- diag(diagnostics, node, `ld ${r}, n expects imm8`);
33
- return undefined;
34
- }
35
- return Uint8Array.of(0x06 + (r8 << 3), n & 0xff);
36
- }
37
- if (r === 'BC' || r === 'DE' || r === 'HL' || r === 'SP') {
38
- if (!fitsImm16(n)) {
39
- diag(diagnostics, node, `ld ${r}, nn expects imm16`);
40
- return undefined;
41
- }
42
- const op = r === 'BC' ? 0x01 : r === 'DE' ? 0x11 : r === 'HL' ? 0x21 : 0x31;
43
- return Uint8Array.of(op, n & 0xff, (n >> 8) & 0xff);
44
- }
45
- if (r === 'IX' || r === 'IY') {
46
- if (!fitsImm16(n)) {
47
- diag(diagnostics, node, `ld ${r}, nn expects imm16`);
48
- return undefined;
49
- }
50
- const prefix = r === 'IX' ? 0xdd : 0xfd;
51
- return Uint8Array.of(prefix, 0x21, n & 0xff, (n >> 8) & 0xff);
52
- }
53
- }
54
- const indexedDst = indexedReg8(ops[0]);
55
- const indexedSrc = indexedReg8(ops[1]);
56
- if ((indexedDst || indexedSrc) && ops[0].kind !== 'Mem' && ops[1].kind !== 'Mem') {
57
- const prefix = indexedDst?.prefix ?? indexedSrc?.prefix;
58
- if ((indexedDst && indexedDst.prefix !== prefix) ||
59
- (indexedSrc && indexedSrc.prefix !== prefix)) {
60
- diag(diagnostics, node, `ld between IX* and IY* byte registers is not supported`);
61
- return undefined;
62
- }
63
- if ((indexedDst && !indexedSrc && ctx.isPlainHLReg8(src)) ||
64
- (indexedSrc && !indexedDst && ctx.isPlainHLReg8(dst))) {
65
- diag(diagnostics, node, `ld with IX*/IY* does not support plain H/L counterpart operands`);
66
- return undefined;
67
- }
68
- const d = indexedDst ? indexedDst.code : dst ? reg8Code(dst) : undefined;
69
- const s = indexedSrc ? indexedSrc.code : src ? reg8Code(src) : undefined;
70
- if (prefix === undefined || d === undefined || s === undefined) {
71
- diag(diagnostics, node, `ld with IX*/IY* byte registers expects reg8 operands`);
72
- return undefined;
73
- }
74
- return Uint8Array.of(prefix, 0x40 + (d << 3) + s);
75
- }
76
- const srcAbs16 = ctx.memAbs16(ops[1], env);
77
- if (srcAbs16 !== undefined) {
78
- if (srcAbs16 < 0 || srcAbs16 > 0xffff) {
79
- diag(diagnostics, node, `ld rr, (nn) expects abs16 address`);
80
- return undefined;
81
- }
82
- if (dst === 'A')
83
- return Uint8Array.of(0x3a, srcAbs16 & 0xff, (srcAbs16 >> 8) & 0xff);
84
- if (dst === 'HL')
85
- return Uint8Array.of(0x2a, srcAbs16 & 0xff, (srcAbs16 >> 8) & 0xff);
86
- if (dst === 'BC')
87
- return Uint8Array.of(0xed, 0x4b, srcAbs16 & 0xff, (srcAbs16 >> 8) & 0xff);
88
- if (dst === 'DE')
89
- return Uint8Array.of(0xed, 0x5b, srcAbs16 & 0xff, (srcAbs16 >> 8) & 0xff);
90
- if (dst === 'SP')
91
- return Uint8Array.of(0xed, 0x7b, srcAbs16 & 0xff, (srcAbs16 >> 8) & 0xff);
92
- if (dst === 'IX')
93
- return Uint8Array.of(0xdd, 0x2a, srcAbs16 & 0xff, (srcAbs16 >> 8) & 0xff);
94
- if (dst === 'IY')
95
- return Uint8Array.of(0xfd, 0x2a, srcAbs16 & 0xff, (srcAbs16 >> 8) & 0xff);
96
- }
97
- const dstAbs16 = ctx.memAbs16(ops[0], env);
98
- if (dstAbs16 !== undefined) {
99
- if (dstAbs16 < 0 || dstAbs16 > 0xffff) {
100
- diag(diagnostics, node, `ld (nn), rr expects abs16 address`);
101
- return undefined;
102
- }
103
- if (src === 'A')
104
- return Uint8Array.of(0x32, dstAbs16 & 0xff, (dstAbs16 >> 8) & 0xff);
105
- if (src === 'HL')
106
- return Uint8Array.of(0x22, dstAbs16 & 0xff, (dstAbs16 >> 8) & 0xff);
107
- if (src === 'BC')
108
- return Uint8Array.of(0xed, 0x43, dstAbs16 & 0xff, (dstAbs16 >> 8) & 0xff);
109
- if (src === 'DE')
110
- return Uint8Array.of(0xed, 0x53, dstAbs16 & 0xff, (dstAbs16 >> 8) & 0xff);
111
- if (src === 'SP')
112
- return Uint8Array.of(0xed, 0x73, dstAbs16 & 0xff, (dstAbs16 >> 8) & 0xff);
113
- if (src === 'IX')
114
- return Uint8Array.of(0xdd, 0x22, dstAbs16 & 0xff, (dstAbs16 >> 8) & 0xff);
115
- if (src === 'IY')
116
- return Uint8Array.of(0xfd, 0x22, dstAbs16 & 0xff, (dstAbs16 >> 8) & 0xff);
117
- }
118
- if (dst && src) {
119
- const d = reg8Code(dst);
120
- const s = reg8Code(src);
121
- if (d !== undefined && s !== undefined) {
122
- return Uint8Array.of(0x40 + (d << 3) + s);
123
- }
124
- }
125
- const indexedDstMem = indexedReg8(ops[0]);
126
- if (indexedDstMem && ops[1].kind === 'Mem') {
127
- const idx = ctx.memIndexed(ops[1], env);
128
- if (!idx) {
129
- diag(diagnostics, node, `ld ${indexedDstMem.display}, source expects (${indexedDstMem.display.startsWith('IX') ? 'ix' : 'iy'}+disp)`);
130
- return undefined;
131
- }
132
- if (idx.prefix !== indexedDstMem.prefix) {
133
- diag(diagnostics, node, `ld ${indexedDstMem.display}, source index base must match destination family`);
134
- return undefined;
135
- }
136
- const disp = idx.disp;
137
- if (disp < -128 || disp > 127) {
138
- diag(diagnostics, node, `ld ${indexedDstMem.display}, (${indexedDstMem.display.startsWith('IX') ? 'ix' : 'iy'}+disp) expects disp8`);
139
- return undefined;
140
- }
141
- return Uint8Array.of(indexedDstMem.prefix, 0x46 + (indexedDstMem.code << 3), disp & 0xff);
142
- }
143
- if (dst) {
144
- const d = reg8Code(dst);
145
- if (d !== undefined && ops[1].kind === 'Mem') {
146
- const mem = ops[1];
147
- if (mem.expr.kind === 'EaName' && mem.expr.name.toUpperCase() === 'HL') {
148
- return Uint8Array.of(0x46 + (d << 3));
149
- }
150
- const idx = ctx.memIndexed(mem, env);
151
- if (idx) {
152
- const disp = idx.disp;
153
- if (disp < -128 || disp > 127) {
154
- diag(diagnostics, node, `ld ${dst}, (ix/iy+disp) expects disp8`);
155
- return undefined;
156
- }
157
- return Uint8Array.of(idx.prefix, 0x46 + (d << 3), disp & 0xff);
158
- }
159
- if (dst.toUpperCase() === 'A' && mem.expr.kind === 'EaName') {
160
- const ea = mem.expr.name.toUpperCase();
161
- if (ea === 'BC')
162
- return Uint8Array.of(0x0a);
163
- if (ea === 'DE')
164
- return Uint8Array.of(0x1a);
165
- }
166
- }
167
- }
168
- if (ops[0].kind === 'Mem') {
169
- const mem = ops[0];
170
- const indexedSrcMem = indexedReg8(ops[1]);
171
- if (indexedSrcMem) {
172
- const idx = ctx.memIndexed(mem, env);
173
- if (!idx) {
174
- diag(diagnostics, node, `ld destination expects (${indexedSrcMem.display.startsWith('IX') ? 'ix' : 'iy'}+disp) for source ${indexedSrcMem.display}`);
175
- return undefined;
176
- }
177
- if (idx.prefix !== indexedSrcMem.prefix) {
178
- diag(diagnostics, node, `ld destination index base must match source ${indexedSrcMem.display} family`);
179
- return undefined;
180
- }
181
- const disp = idx.disp;
182
- if (disp < -128 || disp > 127) {
183
- diag(diagnostics, node, `ld (${indexedSrcMem.display.startsWith('IX') ? 'ix' : 'iy'}+disp), ${indexedSrcMem.display} expects disp8`);
184
- return undefined;
185
- }
186
- return Uint8Array.of(idx.prefix, 0x70 + indexedSrcMem.code, disp & 0xff);
187
- }
188
- if (mem.expr.kind === 'EaName' && mem.expr.name.toUpperCase() === 'HL' && src) {
189
- const s = reg8Code(src);
190
- if (s !== undefined)
191
- return Uint8Array.of(0x70 + s);
192
- }
193
- const idx = src ? ctx.memIndexed(mem, env) : undefined;
194
- if (idx && src) {
195
- const s = reg8Code(src);
196
- if (s !== undefined) {
197
- const disp = idx.disp;
198
- if (disp < -128 || disp > 127) {
199
- diag(diagnostics, node, `ld (ix/iy+disp), ${src} expects disp8`);
200
- return undefined;
201
- }
202
- return Uint8Array.of(idx.prefix, 0x70 + s, disp & 0xff);
203
- }
204
- }
205
- if (mem.expr.kind === 'EaName' && src?.toUpperCase() === 'A') {
206
- const ea = mem.expr.name.toUpperCase();
207
- if (ea === 'BC')
208
- return Uint8Array.of(0x02);
209
- if (ea === 'DE')
210
- return Uint8Array.of(0x12);
211
- }
212
- }
213
- if (ctx.isMemHL(ops[0]) && n !== undefined) {
214
- if (!fitsImm8(n)) {
215
- diag(diagnostics, node, `ld (hl), n expects imm8`);
216
- return undefined;
217
- }
218
- return Uint8Array.of(0x36, n & 0xff);
219
- }
220
- if (n !== undefined) {
221
- const idx = ctx.memIndexed(ops[0], env);
222
- if (idx) {
223
- if (!fitsImm8(n)) {
224
- diag(diagnostics, node, `ld (ix/iy+disp), n expects imm8`);
225
- return undefined;
226
- }
227
- const disp = idx.disp;
228
- if (disp < -128 || disp > 127) {
229
- diag(diagnostics, node, `ld (ix/iy+disp), n expects disp8`);
230
- return undefined;
231
- }
232
- return Uint8Array.of(idx.prefix, 0x36, disp & 0xff, n & 0xff);
233
- }
234
- }
235
- if (r === 'SP' && src) {
236
- if (src === 'HL')
237
- return Uint8Array.of(0xf9);
238
- if (src === 'IX')
239
- return Uint8Array.of(0xdd, 0xf9);
240
- if (src === 'IY')
241
- return Uint8Array.of(0xfd, 0xf9);
242
- }
243
- if (ops[0].kind === 'Mem' && ops[1].kind === 'Mem') {
244
- diag(diagnostics, node, `ld does not support memory-to-memory transfers`);
245
- return undefined;
246
- }
247
- if (dst !== undefined &&
248
- dst !== 'A' &&
249
- (ctx.isMemRegName(ops[1], 'BC') || ctx.isMemRegName(ops[1], 'DE'))) {
250
- diag(diagnostics, node, `ld r8, (bc/de) supports destination A only`);
251
- return undefined;
252
- }
253
- if (src !== undefined &&
254
- src !== 'A' &&
255
- (ctx.isMemRegName(ops[0], 'BC') || ctx.isMemRegName(ops[0], 'DE'))) {
256
- diag(diagnostics, node, `ld (bc/de), r8 supports source A only`);
257
- return undefined;
258
- }
259
- if (dst === 'AF' || src === 'AF') {
260
- diag(diagnostics, node, `ld does not support AF in this form`);
261
- return undefined;
262
- }
263
- if (ctx.isReg16TransferName(dst) && ctx.isReg16TransferName(src)) {
264
- if (dst === 'SP') {
265
- diag(diagnostics, node, `ld SP, rr supports HL/IX/IY only`);
266
- return undefined;
267
- }
268
- diag(diagnostics, node, `ld rr, rr supports SP <- HL/IX/IY only`);
269
- return undefined;
270
- }
271
- diag(diagnostics, node, `ld expects a supported register/memory/immediate transfer form`);
272
- return undefined;
273
- }
@@ -1,13 +0,0 @@
1
- export type EncoderFamily = 'control' | 'alu' | 'io' | 'ld' | 'core' | 'bit';
2
- type EncoderFallbackMode = 'none' | 'standard' | 'arity-short-circuit';
3
- type EncoderRegistryEntry = {
4
- kind: 'zero';
5
- bytes: Uint8Array;
6
- } | {
7
- kind: 'family';
8
- family: EncoderFamily;
9
- fallback: EncoderFallbackMode;
10
- arityDiagnostic: (head: string, operandCount: number) => string | undefined;
11
- };
12
- export declare function getEncoderRegistryEntry(head: string): EncoderRegistryEntry | undefined;
13
- export {};
@@ -1,169 +0,0 @@
1
- function expectOneOrTwoWithA(head, operandCount) {
2
- if (operandCount === 1 || operandCount === 2)
3
- return undefined;
4
- return `${head} expects one operand, or two with destination A`;
5
- }
6
- function expectOneOrTwoWithAOrHl(head, operandCount) {
7
- if (operandCount === 1 || operandCount === 2)
8
- return undefined;
9
- return `${head} expects one operand, two with destination A, or HL,rr form`;
10
- }
11
- function expectOne(head, operandCount) {
12
- if (operandCount === 1)
13
- return undefined;
14
- return `${head} expects one operand`;
15
- }
16
- function expectTwo(head, operandCount) {
17
- if (operandCount === 2)
18
- return undefined;
19
- return `${head} expects two operands`;
20
- }
21
- function expectTwoOrThreeIndexedToReg8(head, operandCount) {
22
- if (operandCount === 2 || operandCount === 3)
23
- return undefined;
24
- return `${head} expects two operands, or three with indexed source + reg8 destination`;
25
- }
26
- function expectOneOrTwoIndexedToReg8(head, operandCount) {
27
- if (operandCount === 1 || operandCount === 2)
28
- return undefined;
29
- return `${head} expects one operand, or two with indexed source + reg8 destination`;
30
- }
31
- function expectTwoOps(head, operandCount) {
32
- if (operandCount === 2)
33
- return undefined;
34
- return `${head} expects two operands`;
35
- }
36
- const identityArity = (_head, _operandCount) => undefined;
37
- const FAMILY_SPECS = [
38
- {
39
- heads: ['ret', 'call', 'djnz', 'jp', 'jr'],
40
- family: 'control',
41
- fallback: 'none',
42
- arityDiagnostic: identityArity,
43
- },
44
- {
45
- heads: ['add', 'sub', 'cp', 'and', 'or', 'xor', 'adc', 'sbc'],
46
- family: 'alu',
47
- fallback: 'standard',
48
- arityDiagnostic: (head, operandCount) => {
49
- switch (head) {
50
- case 'add':
51
- return expectTwoOps(head, operandCount);
52
- case 'sub':
53
- case 'cp':
54
- case 'and':
55
- case 'or':
56
- case 'xor':
57
- return expectOneOrTwoWithA(head, operandCount);
58
- case 'adc':
59
- case 'sbc':
60
- return expectOneOrTwoWithAOrHl(head, operandCount);
61
- default:
62
- return undefined;
63
- }
64
- },
65
- },
66
- {
67
- heads: ['rst', 'im', 'in', 'out'],
68
- family: 'io',
69
- fallback: 'standard',
70
- arityDiagnostic: identityArity,
71
- },
72
- {
73
- heads: ['ld'],
74
- family: 'ld',
75
- fallback: 'none',
76
- arityDiagnostic: identityArity,
77
- },
78
- {
79
- heads: ['inc', 'dec', 'push', 'pop', 'ex'],
80
- family: 'core',
81
- fallback: 'standard',
82
- arityDiagnostic: (head, operandCount) => {
83
- if (head === 'ex')
84
- return expectTwo(head, operandCount);
85
- return expectOne(head, operandCount);
86
- },
87
- },
88
- {
89
- heads: ['bit', 'res', 'set', 'rl', 'rr', 'sla', 'sra', 'srl', 'sll', 'rlc', 'rrc'],
90
- family: 'bit',
91
- fallback: 'arity-short-circuit',
92
- arityDiagnostic: (head, operandCount) => {
93
- switch (head) {
94
- case 'bit':
95
- return expectTwo(head, operandCount);
96
- case 'res':
97
- case 'set':
98
- return expectTwoOrThreeIndexedToReg8(head, operandCount);
99
- case 'rl':
100
- case 'rr':
101
- case 'sla':
102
- case 'sra':
103
- case 'srl':
104
- case 'sll':
105
- case 'rlc':
106
- case 'rrc':
107
- return expectOneOrTwoIndexedToReg8(head, operandCount);
108
- default:
109
- return undefined;
110
- }
111
- },
112
- },
113
- ];
114
- const ZERO_OPCODE_REGISTRY = {
115
- nop: Uint8Array.of(0x00),
116
- halt: Uint8Array.of(0x76),
117
- di: Uint8Array.of(0xf3),
118
- ei: Uint8Array.of(0xfb),
119
- scf: Uint8Array.of(0x37),
120
- ccf: Uint8Array.of(0x3f),
121
- cpl: Uint8Array.of(0x2f),
122
- daa: Uint8Array.of(0x27),
123
- rlca: Uint8Array.of(0x07),
124
- rrca: Uint8Array.of(0x0f),
125
- rla: Uint8Array.of(0x17),
126
- rra: Uint8Array.of(0x1f),
127
- exx: Uint8Array.of(0xd9),
128
- reti: Uint8Array.of(0xed, 0x4d),
129
- retn: Uint8Array.of(0xed, 0x45),
130
- neg: Uint8Array.of(0xed, 0x44),
131
- rrd: Uint8Array.of(0xed, 0x67),
132
- rld: Uint8Array.of(0xed, 0x6f),
133
- ldi: Uint8Array.of(0xed, 0xa0),
134
- ldir: Uint8Array.of(0xed, 0xb0),
135
- ldd: Uint8Array.of(0xed, 0xa8),
136
- lddr: Uint8Array.of(0xed, 0xb8),
137
- cpi: Uint8Array.of(0xed, 0xa1),
138
- cpir: Uint8Array.of(0xed, 0xb1),
139
- cpd: Uint8Array.of(0xed, 0xa9),
140
- cpdr: Uint8Array.of(0xed, 0xb9),
141
- ini: Uint8Array.of(0xed, 0xa2),
142
- inir: Uint8Array.of(0xed, 0xb2),
143
- ind: Uint8Array.of(0xed, 0xaa),
144
- indr: Uint8Array.of(0xed, 0xba),
145
- outi: Uint8Array.of(0xed, 0xa3),
146
- otir: Uint8Array.of(0xed, 0xb3),
147
- outd: Uint8Array.of(0xed, 0xab),
148
- otdr: Uint8Array.of(0xed, 0xbb),
149
- };
150
- const ENCODER_REGISTRY = new Map();
151
- for (const [head, bytes] of Object.entries(ZERO_OPCODE_REGISTRY)) {
152
- ENCODER_REGISTRY.set(head, {
153
- kind: 'zero',
154
- bytes,
155
- });
156
- }
157
- for (const spec of FAMILY_SPECS) {
158
- for (const head of spec.heads) {
159
- ENCODER_REGISTRY.set(head, {
160
- kind: 'family',
161
- family: spec.family,
162
- fallback: spec.fallback,
163
- arityDiagnostic: spec.arityDiagnostic,
164
- });
165
- }
166
- }
167
- export function getEncoderRegistryEntry(head) {
168
- return ENCODER_REGISTRY.get(head.toLowerCase());
169
- }
@@ -1,2 +0,0 @@
1
- import type { EmittedByteMap, ListingArtifact, SymbolEntry, WriteListingOptions } from './types.js';
2
- export declare function writeListing(map: EmittedByteMap, symbols: readonly SymbolEntry[], opts?: WriteListingOptions): ListingArtifact;
@@ -1,79 +0,0 @@
1
- import { getWrittenRange, getWrittenSegments } from './range.js';
2
- function toHexByte(n) {
3
- return (n & 0xff).toString(16).toUpperCase().padStart(2, '0');
4
- }
5
- function toHexWord(n) {
6
- return (n & 0xffff).toString(16).toUpperCase().padStart(4, '0');
7
- }
8
- function symbolAddress(symbol) {
9
- return symbol.kind === 'constant' ? symbol.value & 0xffff : symbol.address & 0xffff;
10
- }
11
- function sortSymbols(a, b) {
12
- const aClass = a.kind === 'constant' ? 1 : 0;
13
- const bClass = b.kind === 'constant' ? 1 : 0;
14
- if (aClass !== bClass) {
15
- return aClass - bClass;
16
- }
17
- const addressCmp = symbolAddress(a) - symbolAddress(b);
18
- if (addressCmp !== 0) {
19
- return addressCmp;
20
- }
21
- return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
22
- }
23
- export function writeListing(map, symbols, opts) {
24
- const lineEnding = opts?.lineEnding ?? '\n';
25
- const bytesPerLine = opts?.bytesPerLine ?? 16;
26
- const { start, end } = getWrittenRange(map);
27
- const segments = getWrittenSegments(map);
28
- const lines = [];
29
- lines.push('; AZM listing');
30
- lines.push(`; range: $${toHexWord(start)}..$${toHexWord(end)} (end exclusive)`);
31
- lines.push('');
32
- const lineBaseSet = new Set();
33
- for (const segment of segments) {
34
- const first = segment.start - (segment.start % bytesPerLine);
35
- const last = segment.end - 1 - ((segment.end - 1) % bytesPerLine);
36
- for (let address = first; address <= last; address += bytesPerLine) {
37
- lineBaseSet.add(address);
38
- }
39
- }
40
- const lineBases = [...lineBaseSet].sort((a, b) => a - b);
41
- let previousBase;
42
- for (const address of lineBases) {
43
- if (previousBase !== undefined && address > previousBase + bytesPerLine) {
44
- const gapStart = previousBase + bytesPerLine;
45
- const gapEndInclusive = address - 1;
46
- const gapLineCount = Math.ceil((address - gapStart) / bytesPerLine);
47
- lines.push(`; ... gap $${toHexWord(gapStart)}..$${toHexWord(gapEndInclusive)} (${gapLineCount} lines)`);
48
- }
49
- const lineBytes = [];
50
- const lineChars = [];
51
- const count = Math.min(bytesPerLine, end - address);
52
- for (let offset = 0; offset < count; offset += 1) {
53
- const byte = map.bytes.get(address + offset);
54
- if (byte === undefined) {
55
- lineBytes.push('..');
56
- lineChars.push(' ');
57
- }
58
- else {
59
- const value = byte & 0xff;
60
- lineBytes.push(toHexByte(value));
61
- lineChars.push(value >= 0x20 && value <= 0x7e ? String.fromCharCode(value) : '.');
62
- }
63
- }
64
- const payload = lineBytes.join(' ').padEnd(bytesPerLine * 3 - 1, ' ');
65
- lines.push(`${toHexWord(address)}: ${payload} |${lineChars.join('')}|`);
66
- previousBase = address;
67
- }
68
- lines.push('');
69
- lines.push('; symbols:');
70
- for (const symbol of [...symbols].sort(sortSymbols)) {
71
- if (symbol.kind === 'constant') {
72
- lines.push(`; constant ${symbol.name} = $${toHexWord(symbol.value)} (${symbol.value})`);
73
- }
74
- else {
75
- lines.push(`; ${symbol.kind} ${symbol.name} = $${toHexWord(symbol.address)}`);
76
- }
77
- }
78
- return { kind: 'lst', text: lines.join(lineEnding) + lineEnding };
79
- }