GitHub - hlorenzi/customasm: πŸ’» An assembler for custom, user-defined instruction sets! https://hlorenzi.github.io/customasm/web/

GitHub – hlorenzi/customasm: πŸ’» An assembler for custom, user-defined instruction sets! https://hlorenzi.github.io/customasm/web/ | line4k – The Ultimate IPTV Experience – Watch Anytime, Anywhere

Streaming Service Promotion

Ready for uninterrupted streaming? Visit us for exclusive deals!
netflix youtubetv starzplay skysport showtime primevideo appletv amc beinsport disney discovery hbo global fubotv
netflix youtubetv starzplay skysport showtime primevideo appletv amc beinsport disney discovery hbo global fubotv

customasm is an assembler that allows you to provide your own custom
instruction sets
to assemble your source files!
It can be useful, for example, if you’re trying to test the bytecode of a new virtual machine,
or if you’re eager to write programs for that new microprocessor architecture
you just implemented in an FPGA chip!

πŸ–₯️ Try it right now on your web browser!

πŸ•ΉοΈ Check out an example project which targets the NES!

⌨️ Install the VSCode syntax highlight extension!

❀️ Support the author!

πŸ“š Check out the wiki
for a changelog, documentation, and a how-to-start guide!

πŸ’² Check out the command-line help! (Better formatted on the command-line itself)

You can install directly from crates.io by running cargo install customasm.
Then the customasm application should automatically become available in your
command-line environment.

You can also download pre-built executables from the
Releases section.

You can compile from source yourself by first cloning the repository and
then simply running cargo build.
There’s also a battery of tests available at cargo test.

Given the following file:

#ruledef
{
    load r1, {value: i8} => 0x11 @ value
    load r2, {value: i8} => 0x12 @ value
    load r3, {value: i8} => 0x13 @ value
    add  r1, r2          => 0x21
    sub  r3, {value: i8} => 0x33 @ value
    jnz  {address: u16}  => 0x40 @ address
    ret                  => 0x50
}

multiply3x4:
    load r1, 0
    load r2, 3
    load r3, 4
    
    .loop:
        add r1, r2
        sub r3, 1
        jnz .loop
    
    ret

…the assembler will use the #ruledef directive to convert the
instructions into binary code:

 outp | addr | data (base 16)

  0:0 |    0 |          ; multiply3x4:
  0:0 |    0 | 11 00    ; load r1, 0
  2:0 |    2 | 12 03    ; load r2, 3
  4:0 |    4 | 13 04    ; load r3, 4
  6:0 |    6 |          ; .loop:
  6:0 |    6 | 21       ; add r1, r2
  7:0 |    7 | 33 01    ; sub r3, 1
  9:0 |    9 | 40 00 06 ; jnz .loop
  c:0 |    c | 50       ; ret

Premium IPTV Experience with line4k

Experience the ultimate entertainment with our premium IPTV service. Watch your favorite channels, movies, and sports events in stunning 4K quality. Enjoy seamless streaming with zero buffering and access to over 10,000+ channels worldwide.

Live Sports & Events in 4K Quality
24/7 Customer Support
Multi-device Compatibility
Start Streaming Now
Sports Channels


line4k

Premium IPTV Experience β€’ 28,000+ Channels β€’ 4K Quality


28,000+

Live Channels


140,000+

Movies & Shows


99.9%

Uptime

Start Streaming Today

Experience premium entertainment with our special trial offer


Get Started Now

Scroll to Top