customasm

Customasm je assembler s nastavitelnou syntaxí instrukcí a kódování strojového kódu.

Github

Online nástroj (oficiální)

Dokumentace (oficiální)

Kuchařka ve skriptech

Doporučuji si přečíst kapitolu customasm wiki, kde se popisuje vytváření přepisovacích pravidel.

Oficiální customasm umí exportovat pouze pro 8-bit a 16-bit Logisim paměti.
Upravená verze (github) umí libovolné 4-32bitové paměti.

Pro nastavení počtu bitů slova instrukce je potřeba na začátek umístit a upravit následující blok, a použít upravenou verzi customasm a použít správný Logisim output formát.

#bankdef code
{
    #bits 22
    #addr 0x0000
    #size 0x8000
    #outp 0x0000
}

Pro označení registrů nebo alu operace můžete s výhodou použít #subruledef (skripta, wiki).

Pomocí asm bloku lze realizovat pseudoinstrukce složené z jedné nebo více jiných instrukcí:

ldi {dst: register}, {value: u16} => asm {
    xor {dst}, {dst}
    addi {dst}, {value[15:8]}
    shli {dst}, 8
    addi {dst}, {value[7:0]}
}

Užitečné příklady kromě zmíněného můžou být např. skok na immediate adresu (ldi R1 + jmp R1), nop, různé manipulace s flagy.

Stejně jako labely lze použít jako hodnotu (adresu následující instrukce za labelem), lze použít symbol $, který se přeloží na adresu aktuální instrukce (tu customasm zná a dosadí jako číslo). Pomocí tohoto symbolu a výpočtů lze např. realizovat pseudoinstrukci absolutního skoku (na label) pomocí relativního skoku v CPU (více detailů viz advanced rules na wiki):

jmpi {addr: u16} => {
    ; korekce o -1 nebo podobné bude záviset na tom,
    ; jak vaše CPU interpretuje relativní adresy
    reladdr = addr - $ - 1
    asm { jmpri {reladdr} }
}

Generování zobrazovacích instrukcí pro 16x16 LED matrix displej

Studenti Maxim Sklenář a Joshua Remington v roce 2025 vytvořili webovou aplikaci, pomocí které lze generovat instrukční posloupnost, která zobrazí zadaný pixelart na 16x16 LED matrix displeji.

matrix.sklenar.org

Last change: 2025-06-18, commit: 884978c