def <<( right )
      case right
      when Symbol
        ins = Risc.load_constant("#{right.class} to #{self.type}" , right , self)
      when Parfait::Object
        ins = Risc.load_constant("#{right.class} to #{self.type}" , right , self)
        builder.compiler.add_constant(right) if builder
      when Label
        ins = Risc.load_constant("#{right.class} to #{self.type}" , right , self)
        builder.compiler.add_constant(right.address) if builder
      when ::Integer
        ins = Risc.load_data("#{right.class} to #{self.type}" , right , self)
      when RegisterValue
        ins = Risc.transfer("#{right.type} to #{self.type}" , right , self)
      when RValue
        ins = Risc.slot_to_reg("#{right.register.type}[#{right.index}] -> #{self.type}" , right.register , right.index , self)
      else
        raise "not implemented for #{right.class}:#{right}"
      end
      builder.add_code(ins) if builder
      return ins
    end
def <<( right )
      case right
      when Symbol
        ins = Risc.load_constant("#{right.class} to #{self.type}" , right , self)
      when Parfait::Object
        ins = Risc.load_constant("#{right.class} to #{self.type}" , right , self)
        builder.compiler.add_constant(right) if builder
      when Label
        ins = Risc.load_constant("#{right.class} to #{self.type}" , right , self)
        builder.compiler.add_constant(right.address) if builder
      when ::Integer
        ins = Risc.load_data("#{right.class} to #{self.type}" , right , self)
      when RegisterValue
        ins = Risc.transfer("#{right.type} to #{self.type}" , right , self)
      when RValue
        ins = Risc.slot_to_reg("#{right.register.type}[#{right.index}] -> #{self.type}" , right.register , right.index , self)
      else
        raise "not implemented for #{right.class}:#{right}"
      end
      builder.add_code(ins) if builder
      return ins
    end
can't overload "=" , so use shift for it.
 move the right side to the left. Left (this) is a RegisterValue
 right value may be
 - constant (Parfait object) , resulting in a LoadConstant
 - another RegisterValue, resulting in a Transfer instruction
 - an RValue, resulting in an SlotToReg