macro_rules! inst {
    ($(#[$outer:meta])* $name:ident |$ctx:ident, $op:ident| { $( $code:tt )* }) => { ... };
    ($(#[$outer:meta])* $name:ident |$ctx:ident| { $( $code:tt )* }) => { ... };
    ($(#[$outer:meta])* $name:ident { $( $code:tt )* }) => { ... };
    ($(#[$outer:meta])* $name:ident |$ctx:ident, $op:ident| override { $( $code:tt )* }) => { ... };
    ($(#[$outer:meta])* $name:ident |$ctx:ident| override { $( $code:tt )* }) => { ... };
    ($(#[$outer:meta])* $name:ident override { $( $code:tt )* }) => { ... };
}
Expand description

Macro to generate an instruction implementation

Examples

use cambridge_asm::inst;

// No Context
inst!(name1 { /* Do something that doesn't need context or op*/ });
// Flow control override
inst!(name2 override { /* */ });

// Context only
inst!(name3 | ctx | { /* Do something with ctx */ });
// Override
inst!(name4 | ctx | override { /* */ });

// Context and op
inst!(name5 | ctx, op | { /* Do something with ctx and op */ });
// Override
inst!(name6 | ctx, op | override { /* */ });

For further reference, look at the source of the module [exec::io]