Менеджер сегментированной/строчной памяти
Всем привет! Помогите пожалуйста люди добрые и умные! Нужна помощь в подробном переводе кода, заданный преподавателем.
менеджер сегментированной памяти: short cMemoryManager::realloc() { short addr = MEMORY_SIZE - 8; sBlockDescription *tmp = (sBlockDescription*)(&memory[addr]); while(empBlockCnt() > 1) { while(tmp->nextAddr != -1) { addr = tmp->nextAddr; tmp = (sBlockDescription*)(&memory[addr]); moveEmptyBlockEx(addr); } glueEmpBlocks(0); addr = MEMORY_SIZE - 8; tmp = (sBlockDescription*)(&memory[addr]); } return 0; } менеджер строчной памяти: void read(int id,int size,int offset,char* data) { sPage* tmp; int start = offset / PSZ; int start_offset = offset - start * PSZ; int cur = 0; int sp = start_offset; int pp = start; if(alc->data[id][pp] != -1) tmp = getPageForReadOrWrite(alc->data[id][pp]); else return; while(size--) { if(sp >= PSZ) { sp = 0; pp ++; if(alc->data[id][pp] != -1) tmp = getPageForReadOrWrite(alc->data[id][pp]); else return; } if(pp >= PCNT)return; // data[cur] = tmp->data[sp]; cur++; // sp ++; } } |
С сегментированной памятью вроде как справился. Помогите с аннотацией строк для строчной памяти.
void read(int id,int size,int offset,char* data) { sPage* tmp; int start = offset / PSZ; int start_offset = offset - start * PSZ; int cur = 0; int sp = start_offset; int pp = start; if(alc->data[id][pp] != -1) tmp = getPageForReadOrWrite(alc->data[id][pp]); else return; while(size--) { if(sp >= PSZ) { sp = 0; pp ++; if(alc->data[id][pp] != -1) tmp = getPageForReadOrWrite(alc->data[id][pp]); else return; } if(pp >= PCNT)return; // data[cur] = tmp->data[sp]; cur++; // sp ++; } } |
Часовой пояс GMT +4, время: 19:05. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.