@jhlagado/azm 0.2.1 → 0.2.3

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 +176 -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 +80 -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,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
- }