macro_rules! insn {
(ADD $dr:ident, $sr1:ident, $sr2:ident $(,)? $(=> $($extra:tt)*)?) => { ... };
(ADD $dr:ident, $sr1:ident, #$imm5:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(AND $dr:ident, $sr1:ident, $sr2:ident $(,)? $(=> $($extra:tt)*)?) => { ... };
(AND $dr:ident, $sr1:ident, #$imm5:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(BR #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(BRn #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(BRz #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(BRp #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(BRnz #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(BRnp #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(BRzp #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(BRnzp #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(JMP $base:ident $(,)? $(=> $($extra:tt)*)?) => { ... };
(JSR #$offset11:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(JSRR $base:ident $(,)? $(=> $($extra:tt)*)?) => { ... };
(LD $dr:ident, #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(LDI $dr:ident, #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(LDR $dr:ident, $base:ident, #$offset6:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(LEA $dr:ident, #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(NOT $dr:ident, $sr:ident $(,)? $(=> $($extra:tt)*)?) => { ... };
(RET $(=> $($extra:tt)*)?) => { ... };
(RTI $(=> $($extra:tt)*)?) => { ... };
(ST $sr:ident, #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(STI $sr:ident, #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(STR $sr:ident, $base:ident, #$offset9:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
(TRAP #$trapvec:expr $(,)? $(=> $($extra:tt)*)?) => { ... };
}