1use super::operand::Operand;
2
3const NOREG: Operand = Operand::new();
4
5pub trait Emitter {
6 fn emit(&mut self, opcode: i64, op0: &Operand, op1: &Operand, op2: &Operand, op3: &Operand);
7
8 fn emit_n(&mut self, opcode: i64, ops: &[&Operand]) {
9 match ops {
10 [op0] => self.emit(opcode, op0, &NOREG, &NOREG, &NOREG),
11
12 [op0, op1] => self.emit(opcode, op0, op1, &NOREG, &NOREG),
13
14 [op0, op1, op2] => self.emit(opcode, op0, op1, op2, &NOREG),
15 [op0, op1, op2, op3] => self.emit(opcode, op0, op1, op2, op3),
16 _ => unreachable!(),
17 }
18 }
19}