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 🙏

© 2026 – Pkg Stats / Ryan Hefner

arc-assembler

v1.1.2

Published

An ARC assembler written in Node.JS.

Readme

arc-assembler PayPal Version Downloads Get help on Codementor

An ARC assembler written in Node.JS.

Presentation

Click here to see the presentation of the project.

Installation

# Install the assembler
$ npm install -g arc-asm
# Install the interpreter
$ npm install -g arc-int

Also, you can checkout the online version.

Usage

Checkout the assembler and interpreter docs

Example

Here we go through the process of assembling a file and then interpreting it.

Write the following content in a file (e.g. hello-world.asm).

! ======================================= !
! Hello World Program written in Assembly !
! --------------------------------------- !
! This program prints in console the text !
! "Hello World"                           !
! ======================================= !

            .begin
            .org 2048

main:       ld [h_start], %r1
            ld [length], %r2
            call loop

            ! Load characters one by one
            ! and print them in the console
loop:       ld %r1, %r3
            addcc %r1, 4, %r1
            addcc %r2, -1, %r2
            printc %r3
            be done
            ba loop

done:       jmpl %r15+4, %r0

h_start:    3000
length:     12

            ! "Hello World" ASCII codes
            .org 3000
            72
            101
            108
            108
            111
            32
            87
            111
            114
            108
            100
            10
            .end

Assemble this the assembly file using the assembler command line tool. This will generate a executable.

$ arc-asm -s hello-world.asm -o hello
1100 0010 0000 0111 0010 1000 0011 1100 << Line 11
1100 0100 0000 0000 0010 1000 0100 0000 << Line 12
0100 0000 0000 0000 0000 1000 0001 1000 << Line 13
1100 0110 0000 0000 0100 0000 0000 0000 << Line 17
1000 0010 1000 0000 0110 0000 0000 0100 << Line 18
1000 0100 1000 0000 1011 1111 1111 1111 << Line 19
1100 0110 0100 1000 1100 0000 0000 0000 << Line 20
0000 0010 1000 0000 0000 1000 0011 0100 << Line 21
0001 0000 1000 0000 0000 1000 0001 1000 << Line 22
1000 0001 1100 0011 1110 0000 0000 0100 << Line 24
0000 0000 0000 0000 0000 1011 1011 1000 << Line 26
0000 0000 0000 0000 0000 0000 0000 1100 << Line 27
0000 0000 0000 0000 0000 0000 0100 1000 << Line 31
0000 0000 0000 0000 0000 0000 0110 0101 << Line 32
0000 0000 0000 0000 0000 0000 0110 1100 << Line 33
0000 0000 0000 0000 0000 0000 0110 1100 << Line 34
0000 0000 0000 0000 0000 0000 0110 1111 << Line 35
0000 0000 0000 0000 0000 0000 0010 0000 << Line 36
0000 0000 0000 0000 0000 0000 0101 0111 << Line 37
0000 0000 0000 0000 0000 0000 0110 1111 << Line 38
0000 0000 0000 0000 0000 0000 0111 0010 << Line 39
0000 0000 0000 0000 0000 0000 0110 1100 << Line 40
0000 0000 0000 0000 0000 0000 0110 0100 << Line 41
0000 0000 0000 0000 0000 0000 0000 1010 << Line 42

Then run it as executable (you have to make sure you installed the interpreter globally):

$ ./hello
Hello World

Or interpret it with the arc-int tool:

$ arc-int hello
Hello World

:memo: Documentation

Supported Instructions

Branch

be
be label

If the z bit from the PSR register is 1, the subrutine located at label address is called.

bneg
bneg label

If the n bit from the PSR register is 1, the subrutine located at label address is called.

bcs
bcs label

If the c bit from the PSR register is 1, the subrutine located at label address of is called.

bvs
bvs label

If the v bit from the PSR register is 1, the subrutine located at label address is called.

ba
ba label

Branch always the subrutine located at label address.

CALL

call
call label

Calls a subrutine located at label address and stores the current address in r15.

jpml
jmpl %r15+4, %r0

Jumps at the address indicated by r15 register value and stores the result in r0.

Arithmetic

addcc
addcc %r1, %r2, %r3

Sums the values of r1 and r2 in r3.

andcc
andcc %r1, %r2, %r3

Bitwise AND between r1 and r2, storing the result in r3.

andncc
andncc %r1, %r2, %r3

Bitwise NOT AND between r1 and r2, storing the result in r3.

orcc
orcc %r1, %r2, %r3

Bitwise OR between r1 and r2, storing the result in r3.

orncc
orncc %r1, %r2, %r3

Bitwise NOR between r1 and r2, storing the result in r3.

xorcc
xorcc %r1, %r2, %r3

Bitwise XOR between r1 and r2, storing the result in r3.

Memory

ld
ld [x], %r1

Load value from x address into r1.

st
ld %r1, [x]

Stores r1 value into x address.

Output

printn
printn %r1

Prints in console the decimal number from %r1.

printc
printc %r1

Prints in console the character from %r1.

Supported pseudo-operations

.begin

.begin

Start assembling.

.end

.end

Stop assembling.

.org

.org 2048

Changes location counter to 2048.

:yum: How to contribute

Have an idea? Found a bug? See how to contribute.

:cake: Thanks

Back in 2014, I coded this during the Computer Architecture course by @HoreaOros–one of my greatest computer-science teachers. :sparkle: :cake:

:scroll: License

MIT © Ionică Bizău