C'est pour l'avenir de PedroM. Les archives en flat (Juste une collection d'entree) ou sector(comme sur AMS).
L'avantage du flat est:
+ Pas de pertes de place du aux bouts qui rentrent pas tout a fait.
+ Taille entree > 64K.
Inconvenient:
+ Consommation peut etre accrue de la Flash (Pas sur a verifier par des simu).
Une entree possedera donc comme struct:
FLAGS.w: UNUSED / IN_USE / DELETED + le type d'entree (VOID, ARCHIVE_SIZE,PEDROM_APPS, SWAP_MEMORY, ...)
SIZE.l: Taille
Ex de GC:
ArcPtr = ArchiveMemoryBegin;
Pass1. Recherche d'un secteur avec une entree marquee comme a effacer.
Pass2: tant que (ok) { ok = NextSector(); EraseSector(); ReCopySector(); }
NextSector:
remaining = 65536, HeapPtr = HeapPtrInit;
if (entry_size > 0)
CopyEntry();
while (remaining > 0)
switch (ArcPtr->Flags)
case IN_USE: entry_size = ArcPtr->size; CopyEntry(); break;
case DELETED: ArcPtr += ArcPtr->size;
case UNUSED: ok = 0;
default: Arg!!!!!!!!!!!!!!!
}
CopyEntry:
cp_size = min(remaining, entry_size) ;
entry_size -= cp_size;
remaining -= cp_size;
HeapPtr = Copy(ArcPtr, HeapPtr, cp_size);
ArcPtr += cp_size;
Evidement c'est simplifie.