void freeop(AMODE *ap) /* * release any temporary registers used in an addressing mode. */ { if( ap->mode == am_immed || ap->mode == am_direct ) return; /* no registers used */ if( ap->mode == am_dreg) freedata(ap->preg); else if( ap->mode == am_areg || ap->mode == am_ind || ap->mode == am_indx || ap->mode == am_adec || ap->mode == am_ainc) freeaddr(ap->preg); else if( ap->mode == am_freg && ap->preg < cf_freefloat && next_float>0) { fregs[ap->preg] = 0; --next_float; } else if (ap->mode == am_baseindxdata) { freeaddr(ap->preg); freedata(ap->sreg); } else if (ap->mode == am_baseindxaddr) { freeaddr(ap->preg); freeaddr(ap->sreg); } }
/*Network Destructor*/ Network::~Network() { freeaddr(); closesocket(s); WSACleanup(); }