Specy/asm-editor

An app to write, run and learn M68K, MIPS, RISC-V, X86, Z80 assembly

323

stars

578

commits

TypeScript

primary language

Sep 11, 2026

updated

asm-editor.specy.app
assembly
javascript
learn
learning
learning-by-doing
m68k
mc68000
mips
mips32
mips-assembly
mips-simulator
motorola-68000
risc-v
riscv
riscv32
simulator
svelte
x86
z80
z80-emulator

README

Asm editor

A webapp to write, run and learn M68K, MIPS, RISC-V, X86 and Z80 assembly code with a focus on teaching and learning assembly.

It includes many debugging and inspection tools aimed to help you understand assembly more easily.

Published research ASM Editor is described in ASM Editor: Understanding Language Abstractions Through Assembly Programming, presented at the 2026 IEEE Global Engineering Education Conference (EDUCON), Cairo. If you use it in teaching or research, please cite the paper.

localImage

App features

  • Code completion and syntax highlighting
  • Run the program or step through it
  • Undo execution and breakpoints
  • Built in devices like terminal with input/output interrupts, screen, keyboard and mouse
  • Inspect the value of each register and memory address to see which was changed with each instruction
  • Create new projects and manage them all in the webapp then share it with others through links or project files
  • IDE with useful errors and warnings to help you learn better
  • Built-in documentation and intellisense with addressing modes, descriptions and examples
  • Customisable settings and shortcuts, including theme customization

Editor Tools

Once running the program there are many tools to help you understand what instructions did and debug the code.

  • Values which changed between each instructions are highlighted and the old value is also visible. registers and memory have tooltips to show the decimal/hexadecimal value.
  • Follow the stack pointer with the dedicated tab, it's split in rows of 4 bytes to make it easier to see the changes
  • Whenever a jump with link instruction is executed, the callstack is saved so that it can be seen
  • A view of the changes to the state of the interpreter is visible to see what each instruction did, like register / memory writes and changes to the ccr, it is also possible to jump back to a previous state
  • step/undo the code, add breakpoints, and jump to a specific execution step
  • Testcase runner, with IO and initial memory/register setup to create "exercises" and test your code
  • Full memory viewer to inspect a memory region, string conversion, hex/dec conversion, signed/unsigned conversion, and more
  • The editor suggests you with the available instructions and the valid addressing modes for each operand, while also giving a simple description and example.

Documentation

The webapp comes with a built-in documentation, both available inside the editor and as a separate page. It explains brefly how each instruction works and the addressing modes, together with interactive examples.

Projects

Projects are stored locally on your browser, and with the app also working offline, you can create and manage them all in the webapp.

Embed the editor

You can embed the editor in your website here, you can set the initial code and additional settings.

Tech stack

The webapp is made with sveltekit, rust webassembly and java TEAVM.

Uses the same editor as vs-code, and the emulators:

Citing ASM Editor

If ASM Editor supports your course or your research, please cite the paper:

E. Menichelli and L. Forlizzi, "ASM Editor: Understanding Language Abstractions Through Assembly Programming," 2026 IEEE Global Engineering Education Conference (EDUCON), Cairo, Egypt, 2026. doi: 10.1109/EDUCON67543.2026.11574463

@inproceedings{menichelli2026asmeditor,
    author    = {Menichelli, Enrico and Forlizzi, Luca},
    title     = {{ASM} {Editor}: {Understanding} {Language} {Abstractions} {Through} {Assembly} {Programming}},
    booktitle = {2026 IEEE Global Engineering Education Conference (EDUCON)},
    address   = {Cairo, Egypt},
    publisher = {IEEE},
    year      = {2026},
    month     = apr,
    doi       = {10.1109/EDUCON67543.2026.11574463}
}

Local setup

You must have node.js 24+ installed, then you can clone the repository and run:

npm install
npm run dev # to run the dev server
# npm run build # to build the app

Contributing

If you wish to contribute, make a new issue to discuss the changes you want to make (or comment on an existing one).

We are looking for people to help with documentation and courses, you can look at more info here

Contributors

Specy

547 commits

Copilot

25 commits

roccix

6 commits

Specy/asm-editor

An app to write, run and learn M68K, MIPS, RISC-V, X86, Z80 assembly

323

stars

578

commits

TypeScript

primary language

Sep 11, 2026

updated

asm-editor.specy.app
assembly
javascript
learn
learning
learning-by-doing
m68k
mc68000
mips
mips32
mips-assembly
mips-simulator
motorola-68000
risc-v
riscv
riscv32
simulator
svelte
x86
z80
z80-emulator

README

Asm editor

A webapp to write, run and learn M68K, MIPS, RISC-V, X86 and Z80 assembly code with a focus on teaching and learning assembly.

It includes many debugging and inspection tools aimed to help you understand assembly more easily.

Published research ASM Editor is described in ASM Editor: Understanding Language Abstractions Through Assembly Programming, presented at the 2026 IEEE Global Engineering Education Conference (EDUCON), Cairo. If you use it in teaching or research, please cite the paper.

localImage

App features

  • Code completion and syntax highlighting
  • Run the program or step through it
  • Undo execution and breakpoints
  • Built in devices like terminal with input/output interrupts, screen, keyboard and mouse
  • Inspect the value of each register and memory address to see which was changed with each instruction
  • Create new projects and manage them all in the webapp then share it with others through links or project files
  • IDE with useful errors and warnings to help you learn better
  • Built-in documentation and intellisense with addressing modes, descriptions and examples
  • Customisable settings and shortcuts, including theme customization

Editor Tools

Once running the program there are many tools to help you understand what instructions did and debug the code.

  • Values which changed between each instructions are highlighted and the old value is also visible. registers and memory have tooltips to show the decimal/hexadecimal value.
  • Follow the stack pointer with the dedicated tab, it's split in rows of 4 bytes to make it easier to see the changes
  • Whenever a jump with link instruction is executed, the callstack is saved so that it can be seen
  • A view of the changes to the state of the interpreter is visible to see what each instruction did, like register / memory writes and changes to the ccr, it is also possible to jump back to a previous state
  • step/undo the code, add breakpoints, and jump to a specific execution step
  • Testcase runner, with IO and initial memory/register setup to create "exercises" and test your code
  • Full memory viewer to inspect a memory region, string conversion, hex/dec conversion, signed/unsigned conversion, and more
  • The editor suggests you with the available instructions and the valid addressing modes for each operand, while also giving a simple description and example.

Documentation

The webapp comes with a built-in documentation, both available inside the editor and as a separate page. It explains brefly how each instruction works and the addressing modes, together with interactive examples.

Projects

Projects are stored locally on your browser, and with the app also working offline, you can create and manage them all in the webapp.

Embed the editor

You can embed the editor in your website here, you can set the initial code and additional settings.

Tech stack

The webapp is made with sveltekit, rust webassembly and java TEAVM.

Uses the same editor as vs-code, and the emulators:

Citing ASM Editor

If ASM Editor supports your course or your research, please cite the paper:

E. Menichelli and L. Forlizzi, "ASM Editor: Understanding Language Abstractions Through Assembly Programming," 2026 IEEE Global Engineering Education Conference (EDUCON), Cairo, Egypt, 2026. doi: 10.1109/EDUCON67543.2026.11574463

@inproceedings{menichelli2026asmeditor,
    author    = {Menichelli, Enrico and Forlizzi, Luca},
    title     = {{ASM} {Editor}: {Understanding} {Language} {Abstractions} {Through} {Assembly} {Programming}},
    booktitle = {2026 IEEE Global Engineering Education Conference (EDUCON)},
    address   = {Cairo, Egypt},
    publisher = {IEEE},
    year      = {2026},
    month     = apr,
    doi       = {10.1109/EDUCON67543.2026.11574463}
}

Local setup

You must have node.js 24+ installed, then you can clone the repository and run:

npm install
npm run dev # to run the dev server
# npm run build # to build the app

Contributing

If you wish to contribute, make a new issue to discuss the changes you want to make (or comment on an existing one).

We are looking for people to help with documentation and courses, you can look at more info here

Contributors

Specy

547 commits

Copilot

25 commits

roccix

6 commits

Languages

TypeScript

69.6%

Svelte

29.3%