macro_rules! instr {
(fail) => { ... };
(succ) => { ... };
(jmp $offset:literal) => { ... };
(jif $offset:literal) => { ... };
(routine $offset:literal) => { ... };
(call $offset:literal @ $lib:literal) => { ... };
(exec $offset:literal @ $lib:literal) => { ... };
(ret) => { ... };
(zero $reg:ident [ $idx:literal ]) => { ... };
(cl $reg:ident [ $idx:literal ]) => { ... };
(put $reg:ident [ $idx:literal ], $val:tt) => { ... };
(putif $reg:ident [ $idx:literal ], $val:tt) => { ... };
(swp $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(mov $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(amov:u $reg1:ident , $reg2:ident) => { ... };
(amov:s $reg1:ident , $reg2:ident) => { ... };
(amov:f $reg1:ident , $reg2:ident) => { ... };
(amov:d $reg1:ident , $reg2:ident) => { ... };
(gt $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(gt:u $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(gt:s $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(gt:f $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(gt:d $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(lt $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(lt:u $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(lt:s $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(lt:f $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(lt:d $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(eq $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(len $reg:ident [ $idx:literal ]) => { ... };
(cnt $reg:ident [ $idx:literal ]) => { ... };
(st2a) => { ... };
(a2st) => { ... };
(neg $reg:ident [ $idx:literal ]) => { ... };
(inc : $flag:ident $reg:ident [ $idx:literal ]) => { ... };
(inc : $flag:ident $reg:ident [ $idx:literal ], $step:expr) => { ... };
(dec : $flag:ident $reg:ident [ $idx:literal ]) => { ... };
(dec : $flag:ident $reg:ident [ $idx:literal ], $step:expr) => { ... };
(add : $flag:ident $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(sub : $flag:ident $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(mul : $flag:ident $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(div : $flag:ident $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(rem : $flag:ident $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(abs $reg:ident [ $idx:literal ]) => { ... };
(ecgen : secp $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(ecmul : secp $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ] , $reg3:ident [ $idx3:literal ]) => { ... };
(ecadd : secp $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
(ecneg : secp $reg1:ident [ $idx1:literal ] , $reg2:ident [ $idx2:literal ]) => { ... };
}