fn internal_binop_no_def_r_r(&mut self, inst: &str, op1: &P<Value>, op2: &P<Value>) {
        let len = check_op_len(op1);

        // with postfix
        let inst = inst.to_string() + &op_postfix(len);
        trace!("emit: {} {} {}", inst, op1, op2);

        let (reg1, id1, loc1) = self.prepare_reg(op1, inst.len() + 1);
        let (reg2, id2, loc2) = self.prepare_reg(op2, inst.len() + 1 + reg1.len() + 1);

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

        self.add_asm_inst(
            asm,
            linked_hashmap!{},
            {
                if id1 == id2 {
                    linked_hashmap!{
                        id1 => vec![loc1, loc2]
                    }
                } else {
                    linked_hashmap!{
                        id1 => vec![loc1],
                        id2 => vec![loc2]
                    }
                }
            },
            false
        )
    }
/// emits an instruction (use 2 regs, define none)
emits an instruction (use 2 regs, define none)
emits an instruction ( use 2 regs define none )
fn internal_binop_no_def_r_r(&mut self, inst: &str, op1: &P<Value>, op2: &P<Value>) {
        let len = check_op_len(op1);
        // with postfix
        let inst = inst.to_string() + &op_postfix(len);
        trace!("emit: {} {} {}", inst, op1, op2);
        let (reg1, id1, loc1) = self.prepare_reg(op1, inst.len() + 1);
        let (reg2, id2, loc2) = self.prepare_reg(op2, inst.len() + 1 + reg1.len() + 1);
        let asm = format!("{} {},{}", inst, reg1, reg2);
        self.add_asm_inst(
            asm,
            linked_hashmap!{},
            {
                if id1 == id2 {
                    linked_hashmap!{
                        id1 => vec![loc1, loc2]
                    }
                } else {
                    linked_hashmap!{
                        id1 => vec![loc1],
                        id2 => vec![loc2]
                    }
                }
            },
            false
        )
    }
fn internal_binop_no_def_r_r ( & mut self , inst : & str , op1 : & P < Value > , op2 : & P < Value > ) { let len = check_op_len ( op1 ) ; // with postfix let inst = inst . to_string ( ) + & op_postfix ( len ) ; trace ! ( " " inst op1 op2 ) ; let ( reg1 , id1 , loc1 ) = self . prepare_reg ( op1 , inst . len ( ) + 1 ) ; let ( reg2 , id2 , loc2 ) = self . prepare_reg ( op2 , inst . len ( ) + 1 + reg1 . len ( ) + 1 ) ; let asm = format ! ( " " inst reg1 reg2 ) ; self . add_asm_inst ( asm , linked_hashmap ! { } , { if id1 == id2 { linked_hashmap ! { id1 vec [ loc1 loc2 ] } } else { linked_hashmap ! { id1 vec [ loc1 ] id2 vec [ loc2 ] } } } , false ) }
emits an instruction (use 2 regs, define none)
emits an instruction ( use 2 regs define none )
&mut self
inst
&str
op1
&P<Value>
op2
&P<Value>
&mut self
inst
&str
op1
&P<Value>
op2
&P<Value>