//! Trait definitions of various instructions. mod add; mod call; mod dec; mod jmp; mod jnz; mod jz; mod mov; mod nop; mod ret; mod test; pub trait Add { /// Emit an add instruction. fn add(&mut self, op1: T, op2: U); } pub trait Call { /// Emit a call instruction. fn call(&mut self, op1: T); } pub trait Dec { /// Emit a decrement instruction. fn dec(&mut self, op1: T); } pub trait Jmp { /// Emit an unconditional jump instruction. fn jmp(&mut self, op1: T); } pub trait Jnz { /// Emit a conditional jump if not zero instruction (`ZF = 0`). fn jnz(&mut self, op1: T); } pub trait Jz { /// Emit a conditional jump if zero instruction (`ZF = 1`). fn jz(&mut self, op1: T); } pub trait Mov { /// Emit an move instruction. fn mov(&mut self, op1: T, op2: U); } pub trait Test { /// Emit a logical compare instruction. /// /// Computes the bit-wise logical AND of first operand and the second operand and sets the /// `SF`, `ZF`, and `PF` status flags, the result is discarded. fn test(&mut self, op1: T, op2: U); }