fn internal_binop_def_r_mr(&mut self, inst: &str, dest: &P<Value>, src: &P<Value>) {
        let len = check_op_len(dest);

        let inst = inst.to_string() + &op_postfix(len);
        trace!("emit: {} {}, {} -> {}", inst, src, dest, dest);

        let mreg = self.prepare_machine_reg(src);
        let mreg_name = src.name();
        let (reg2, id2, loc2) = self.prepare_reg(dest, inst.len() + 1 + 1 + mreg_name.len() + 1);

        let asm = format!("{} %{},{}", inst, mreg_name, reg2);

        self.add_asm_inst(
            asm,
            linked_hashmap!{
                id2 => vec![loc2.clone()]
            },
            linked_hashmap!{
                id2 => vec![loc2],
                mreg => vec![]
            },
            false
        )
    }
/// emits an instruction (use 1 reg 1 mreg, define 1st reg)
emits an instruction (use 1 reg 1 mreg, define 1st reg)
emits an instruction ( use 1 reg 1 mreg define 1st reg )
fn internal_binop_def_r_mr(&mut self, inst: &str, dest: &P<Value>, src: &P<Value>) {
        let len = check_op_len(dest);
        let inst = inst.to_string() + &op_postfix(len);
        trace!("emit: {} {}, {} -> {}", inst, src, dest, dest);
        let mreg = self.prepare_machine_reg(src);
        let mreg_name = src.name();
        let (reg2, id2, loc2) = self.prepare_reg(dest, inst.len() + 1 + 1 + mreg_name.len() + 1);
        let asm = format!("{} %{},{}", inst, mreg_name, reg2);
        self.add_asm_inst(
            asm,
            linked_hashmap!{
                id2 => vec![loc2.clone()]
            },
            linked_hashmap!{
                id2 => vec![loc2],
                mreg => vec![]
            },
            false
        )
    }
fn internal_binop_def_r_mr ( & mut self , inst : & str , dest : & P < Value > , src : & P < Value > ) { let len = check_op_len ( dest ) ; let inst = inst . to_string ( ) + & op_postfix ( len ) ; trace ! ( " " inst src dest dest ) ; let mreg = self . prepare_machine_reg ( src ) ; let mreg_name = src . name ( ) ; let ( reg2 , id2 , loc2 ) = self . prepare_reg ( dest , inst . len ( ) + 1 + 1 + mreg_name . len ( ) + 1 ) ; let asm = format ! ( " " inst mreg_name reg2 ) ; self . add_asm_inst ( asm , linked_hashmap ! { id2 vec [ loc2 clone ( ) ] } , linked_hashmap ! { id2 vec [ loc2 ] mreg vec [ ] } , false ) }
emits an instruction (use 1 reg 1 mreg, define 1st reg)
emits an instruction ( use 1 reg 1 mreg define 1st reg )
&mut self
inst
&str
dest
&P<Value>
src
&P<Value>
&mut self
inst
&str
dest
&P<Value>
src
&P<Value>