Code example

include "registers.mya";

bitfield Reg[4]

bitfield Opcode[8] {
    imm[1]
    op[7]
}

register r0[32] = Reg{0}
register r1[32] = Reg{1}
register r2[32] = Reg{2}
register r3[32] = Reg{3}
register r4[32] = Reg{4}
register r5[32] = Reg{5}
register r6[32] = Reg{6}
register r7[32] = Reg{7}

# Internal rules to avoid errors.
set INSTRUCTION_MAX_SIZE = 16;
set INSTRUCTION_MIN_SIZE = 16;

# Assembly example: mov r1, r2
inst mov[16](arg1: register[32], arg2: register[32]) {
    opcode = Opcode {
        imm = 0b0,
        op = 0x00,
    }, # It's equivalent to: Opcode{0}
    reg1 = Reg{arg1},
    reg2 = Reg{arg2},
}