aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/insn.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/insn.rs')
-rw-r--r--src/insn.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/insn.rs b/src/insn.rs
index 60004d2..c02206c 100644
--- a/src/insn.rs
+++ b/src/insn.rs
@@ -2,6 +2,8 @@
mod add;
mod call;
+mod cmovnz;
+mod cmovz;
mod cmp;
mod dec;
mod jmp;
@@ -26,6 +28,20 @@ pub trait Call<T> {
fn call(&mut self, op1: T);
}
+pub trait Cmovnz<T, U> {
+ /// Emit a (conditional) move if not zero instruction.
+ ///
+ /// Move is only commited if (ZF=0).
+ fn cmovnz(&mut self, op1: T, op2: U);
+}
+
+pub trait Cmovz<T, U> {
+ /// Emit a (conditional) move if zero instruction.
+ ///
+ /// Move is only commited if (ZF=1).
+ fn cmovz(&mut self, op1: T, op2: U);
+}
+
/// Trait for [`cmp`](https://www.felixcloutier.com/x86/cmp) instruction kinds.
pub trait Cmp<T, U> {
/// Emit a compare instruction.