Macro cambridge_asm::inst
source · [−]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
]