# olympia_derive
olympia_derive currently provides one derive macro, OlympiaInstruction.
A usage example for a two argument instruction is below:
```rust
#[derive(OlympiaInstruction)]
#[olympia(
opcode=0x00AA_A111,
label="LD",
excluded(0b1010_1100)
)]
struct LoadRegisterConstant8 {
#[olympia(dest, mask=0xA)]
dest: ByteRegisterLookup,
#[olympia(src)]
src: u8,
}
```
A usage example for one argument instruction is below:
```rust
#[derive(OlympiaInstruction)]
#[olympia(
opcode=0x110A_A000,
label="RET",
)]
struct ReturnIf {
#[olympia(single, mask=0xA)]
dest: ByteRegisterLookup,
}
```
A usage example for no argument instruction is below:
```rust
#[derive(OlympiaInstruction)]
#[olympia(
opcode=0x1100_1001,
label="RET",
)]
struct ReturnIf;
```