{"id":17719909,"url":"https://github.com/specy/asm-editor","last_synced_at":"2025-04-15T11:13:35.803Z","repository":{"id":64808463,"uuid":"477863727","full_name":"Specy/asm-editor","owner":"Specy","description":"A modern webapp to write, run and learn M68K and MIPS assembly code","archived":false,"fork":false,"pushed_at":"2025-04-14T18:04:47.000Z","size":4709,"stargazers_count":147,"open_issues_count":5,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-15T11:13:18.430Z","etag":null,"topics":["assembly","hacktoberfest","interpreter","javascript","m68k","mips","mips-architecture","mips-assembler","mips-assembly","monaco-editor","motorola-68000","svelte"],"latest_commit_sha":null,"homepage":"https://asm-editor.specy.app","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Specy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-04-04T20:32:40.000Z","updated_at":"2025-04-15T11:00:31.000Z","dependencies_parsed_at":"2023-02-17T04:02:26.290Z","dependency_job_id":"4a1b413b-d995-4bf7-a31e-aad04d920db2","html_url":"https://github.com/Specy/asm-editor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"Specy/svelte-static-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Specy%2Fasm-editor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Specy%2Fasm-editor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Specy%2Fasm-editor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Specy%2Fasm-editor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Specy","download_url":"https://codeload.github.com/Specy/asm-editor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249058384,"owners_count":21205911,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly","hacktoberfest","interpreter","javascript","m68k","mips","mips-architecture","mips-assembler","mips-assembly","monaco-editor","motorola-68000","svelte"],"created_at":"2024-10-25T15:13:28.953Z","updated_at":"2025-04-15T11:13:35.792Z","avatar_url":"https://github.com/Specy.png","language":"Svelte","readme":"# Asm editor\n\nA webapp made with [sveltekit](https://kit.svelte.dev/), [rust](https://www.rust-lang.org/it) webassembly and [java TEAVM](https://teavm.org/) to learn, write and run M68K, MIPS and X86 assembly code.\nUses monaco-editor for the editor, my [WASM M68K interpreter](https://github.com/Specy/s68k) to run the code, and a Java [MIPS Assembler (mars)](https://github.com/Specy/mars) compiled to javascript.\n\nMainly made to help people approaching assembly by providing the tools necessary to write and debug code more easily.\n![localImage](https://asm-editor.specy.app/images/ASM-editor.webp)\n\n## App features\n\n- Code completion and syntax highlighting\n- Run the program or step through it\n- Code breakpoints, settings, input/output interrupts, undo, formatter and more\n- Inspect the value of each register and memory address to see which was changed with each instruction\n- Create new projects and manage them all in the webapp\n- IDE with semantic checks and useful errors to help you learn assembly\n- Built-in documentation and intellisense with addressing modes, descriptions and examples\n- Customisable settings and shortcuts, including theme customization\n\n## Editor Tools\n\nOnce running the program there are many tools to help you understand what instructions did and debug the code.\n\n- 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.\n- Follow the stack pointer with the dedicated tab, it's split in rows of 4 bytes to make it easier to see the changes\n- Whenever a jump with link instruction is executed, the callstack is saved so that it can be seen\n- 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\n- step/undo the code, add breakpoints, and jump to a specific execution step\n- Testcase runner, with IO and initial memory/register setup to create \"exercises\" and test your code\n- Full memory viewer to inspect a memory region, string conversion, hex/dec conversion, signed/unsigned conversion, and more\n\n## Code completion and syntax highlighting\n\nThe editor suggests you with the available instructions and the valid addressing modes for each operand, while also\ngiving a simple description and example.\n\n## Documentation\n\nThe webapp comes with a [built-in documentation](https://asm-editor.specy.app/documentation), both available inside the editor and as a separate page. It explains brefly how each instruction works and the addressing modes, further documentation is coming in the future.\n\n## Settings and shortcuts\n\nSettings to choose from to customise the editor and the interpreter, like how to view the registers, how many steps to keep in history, themes, etc. There are also some shortcuts to ease the use of the editor, which can be changed in the settings.\n\n## Projects\n\nProjects are stored locally on your browser, and with the app also working offline, you can create and manage them all in the webapp. Export and import to come in the future.\n\n## Embed the editor\n\nYou can embed the editor [here](https://asm-editor.specy.app/embed), by using an iframe, you can set the initial code and additional settings by passing them as query parameters. Which can be built by visiting the link above.\n\n# Benchmarks M68K\n\nThe M68K interpreter runs at round 50mhz on the browser and 60mhz natively (on my machine).\nYou can benchmark your own machine by running a loop, the time it took to run is shown in the bottom right of the console in the editor, the total time of each execution is shown. example code:\n\n```asm\nlimit equ 10000000\nmove.l #limit, d0\nmove.l #0, d1\nfor:\n    add.l #1, d1\n    sub.l #1, d0\n    bne for\n```\n\nThis runs 30 million instructions, make sure you set the Maximum instructions iteration, Maximum history size and Maximum visible history size to 0, as well as not having any breakpoints, this will turn off the\ndebugging tools and run the code as fast as possible.\n\n# Benchmarks MIPS\n\nThe MIPS interpreter runs at round 2mhz on the browser.\nJust like the M68K you can run this code to benchmark your own browser:\n```asm\nmain:\n    li   $t0, 1000000\n    li   $t1, 0 \nfor:\n    addi $t1, $t1, 1 \n    addi $t0, $t0, -1\n    bne  $t0, $zero, for\n\n```\nThis runs 3 million instructions.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspecy%2Fasm-editor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspecy%2Fasm-editor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspecy%2Fasm-editor/lists"}