static void Createaddresses(void) { QUAD *head = intermed_head; while (head) { if (head->dc.opcode != i_assnblock && head->dc.opcode != i_clrblock) if (head->dc.opcode != i_label && head->dc.opcode != i_passthrough && !head->ignoreMe) { if (head->ans && !(head->temps & TEMP_ANS) && head->ans->mode != i_immed) { CreateMem(head->ans); } if (head->dc.left && !(head->temps & TEMP_LEFT)) { // fixme... if (head->dc.left->mode == i_direct || (!isarithmeticconst(head->dc.left->offset) && head->dc.left->offset->type != en_labcon && head->dc.left->offset->type != en_add)) CreateMem(head->dc.left); } if (head->dc.right && !(head->temps & TEMP_RIGHT)) { // fixme... if (head->dc.right->mode == i_direct || (!isarithmeticconst(head->dc.right->offset) && head->dc.right->offset->type != en_labcon && head->dc.right->offset->type != en_add)) CreateMem(head->dc.right); } } head = head->fwd; } }
GenericImageMemBase::GenericImageMemBase(size_t nBytes) : m_memOK(false) , m_byteSize(0) , m_pByteMem(NULL) { CreateMem(nBytes); }
void InitSlab(int mb) { #ifdef SlabMemory if (SlabRootLoc) DeleteSlab(); CurrentSlabSize = mb * 0x100000; CreateMem(&SlabRootLoc, 64, CurrentSlabSize, &SlabNumber, &LargeSlab, "SLAB"); CurrentSlabLoc = SlabRootLoc + (0x40 - ((uint64)(SlabRootLoc) &0x3f)); #endif FillSlab(); }
void WordImageMem::CopyFrom(const unsigned short* wordPtr, size_t nWords, ECopyMode cmode) { CreateMem(nWords*sizeof(unsigned short)); if (MemOK()) { switch (cmode) { case EYM_Reverse: { const unsigned short* sPtr=wordPtr+nWords; unsigned short* dPtr=WordMemPtrRef(); for (size_t i=0; i<nWords; i++) {*dPtr=*(--sPtr); ++dPtr;}; } break; case EYM_Forward: default: { ::memcpy(WordMemPtrRef(), wordPtr, nWords*sizeof(unsigned short)); } }//switch } }
void GenericImageMemBase::CopyFrom(const unsigned char* bytePtr, size_t nBytes, ECopyMode cmode) { CreateMem(nBytes); if (m_memOK) { switch (cmode) { case EYM_Reverse: { const unsigned char* sPtr=bytePtr+nBytes; unsigned char* dPtr=m_pByteMem; for (size_t i=0; i<nBytes; i++) {*dPtr=*(--sPtr); ++dPtr;}; } break; case EYM_Forward: default: { ::memcpy(m_pByteMem, bytePtr, nBytes); } }//switch } }