(self, stmt)
:param Stmt.Assignment stmt:
        :return:
def _ail_handle_Assignment(self, stmt):
        """

        :param Stmt.Assignment stmt:
        :return:
        """

        src = self._expr(stmt.src)
        dst = stmt.dst

        if type(dst) is Expr.Tmp:
            self.state.store_temp(dst.tmp_idx, src)

        elif type(dst) is Expr.Register:
            if src.needs_details:
                # provide details
                src = src.with_details(dst.size, dst, self._codeloc())

            self.state.store_register(dst, src)
            if isinstance(stmt.src, (Expr.Register, Stmt.Call)):
                # set equivalence
                self.state.add_equivalence(self._codeloc(), dst, stmt.src)
        else:
            l.warning('Unsupported type of Assignment dst %s.', type(dst).__name__)
def _ail_handle_Assignment ( self , stmt ) : src = self . _expr ( stmt . src ) dst = stmt . dst if type ( dst ) is Expr . Tmp : self . state . store_temp ( dst . tmp_idx , src ) elif type ( dst ) is Expr . Register : if src . needs_details : # provide details src = src . with_details ( dst . size , dst , self . _codeloc ( ) ) self . state . store_register ( dst , src ) if isinstance ( stmt . src , ( Expr . Register , Stmt . Call ) ) : # set equivalence self . state . add_equivalence ( self . _codeloc ( ) , dst , stmt . src ) else : l . warning ( 'Unsupported type of Assignment dst %s.' , type ( dst ) . __name__ )