npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sicxe

v0.1.0

Published

SIC/XE assembler in WebAssembly.

Downloads

2

Readme

SIC/XE Assembler

Yet another SIC/XE assembler.

Features

  • Support SIC/XE instructions and directives.
  • Support control sections.
  • Support program blocks.
  • Support literals.
  • Support symbol-defining directive (EQU).
  • Support syntax checking.
  • Support basic semantic checking.

Usage

You'll need the latest stable version of Rust to build the assembler.

$ cargo build --release
$ ./target/release/sicxe-cli <source-file>

Architecture

The assembler is generally divided into 4 parts:

  • Tokenizer (Just remove comments and split the line into tokens)
  • Parser (Parse the tokens into Frames)
  • Transformer(s) (Transform a sequence of Frames into another sequence of Frames while resolving directives and symbols)
  • Optimizer (Optimize the object code layout)

Frames

There are 3 types of frames:

pub enum FrameInner {
    Instruction(Instruction),
    Directive(Directive),
    ObjectRecord(ObjectRecord),
}
  • Instruction: Represents an instruction (e.g. LDA, J, JSUB, etc.)
  • Directive: Represents a directive (e.g. START, END, BYTE, WORD, etc.)
  • ObjectRecord: Represents an object record (e.g. T, M, E, etc.)

Transformer(s)

  • Section Splitter: It split the source program into control sections, and treats each section a separate program that can be passed to other transformers.
  • Block Rearranger: It rearranges the frames' layout based on the program blocks configuration.
  • Literal Dumper: It dumps the literals into BYTE directives.
  • Symbol Resolver: It resolves the symbols and replaces them with their addresses.
  • Translator: It translates the frames into object records.

Optimizer

It optimizes the object code layout to make it compact as possible.

Copyright & License

© 2023 Jacob Lin

Distributed under the AGPL-3.0 License. See LICENSE for more information.